Vague B — 110 nouvelles sources (26 Dayforce nouvelle famille + 84 sur familles existantes)
- Nouvelle famille Dayforce HCM (jobs.dayforcehcm.com, API JSON du frontal Next.js, csrf anonyme + recherche paginée, détail PayClass/PayType avec cache et budget) : 26 employeurs dont Groupe Maurice, Groupe CH, La Vie en Rose, Eidos-Montréal, Air Canada Rouge, Port de Québec, Soprema, BPA… - Ajouts sur familles existantes : Workday +17 (Simons, Cineplex, TJX, FedEx, Abbott…), Greenhouse +17 (Coveo, KRAFTON, Lyft, AutoTrader…), SmartRecruiters +13, Workable +11, Breezy +8, Recruitee +7, Lever +6, Ashby +5. - sources.json : 244 → 354 sources ; docs/connecteurs régénérées (376 fiches). - docs/CONFORMITE.md : bases d'accès vérifiées 2026-08-22, 20+ sources écartées avec raisons (agences, agrégateurs, babillards vides, faux positifs français). - Sync validé : 110/110 sources OK, 2 102 offres ajoutées (total BD 25 280). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
160 changed files +12,293 −4,518
added
data/feeds-vagueB.json
+1382 −0
@@ -0,0 +1,1382 @@ | ||
| 1 | +[ | |
| 2 | + { | |
| 3 | + "ats": "ashby", | |
| 4 | + "employer": "Alan Canada", | |
| 5 | + "sectors": [ | |
| 6 | + "Assurance" | |
| 7 | + ], | |
| 8 | + "cities": [ | |
| 9 | + "Montréal" | |
| 10 | + ], | |
| 11 | + "url": "", | |
| 12 | + "org": "alan" | |
| 13 | + }, | |
| 14 | + { | |
| 15 | + "ats": "ashby", | |
| 16 | + "employer": "Billups", | |
| 17 | + "sectors": [ | |
| 18 | + "Marketing" | |
| 19 | + ], | |
| 20 | + "cities": [ | |
| 21 | + "Montréal" | |
| 22 | + ], | |
| 23 | + "url": "", | |
| 24 | + "org": "billups" | |
| 25 | + }, | |
| 26 | + { | |
| 27 | + "ats": "ashby", | |
| 28 | + "employer": "Exegy", | |
| 29 | + "sectors": [ | |
| 30 | + "TI" | |
| 31 | + ], | |
| 32 | + "cities": [ | |
| 33 | + "Montréal" | |
| 34 | + ], | |
| 35 | + "url": "", | |
| 36 | + "org": "exegy" | |
| 37 | + }, | |
| 38 | + { | |
| 39 | + "ats": "ashby", | |
| 40 | + "employer": "Lambda", | |
| 41 | + "sectors": [ | |
| 42 | + "TI" | |
| 43 | + ], | |
| 44 | + "cities": [ | |
| 45 | + "Bécancour" | |
| 46 | + ], | |
| 47 | + "url": "", | |
| 48 | + "org": "lambda" | |
| 49 | + }, | |
| 50 | + { | |
| 51 | + "ats": "ashby", | |
| 52 | + "employer": "Neo Financial", | |
| 53 | + "sectors": [ | |
| 54 | + "Finance" | |
| 55 | + ], | |
| 56 | + "cities": [ | |
| 57 | + "Laval" | |
| 58 | + ], | |
| 59 | + "url": "", | |
| 60 | + "org": "neofinancial" | |
| 61 | + }, | |
| 62 | + { | |
| 63 | + "ats": "breezy", | |
| 64 | + "employer": "BDL Énergie", | |
| 65 | + "sectors": [ | |
| 66 | + "Énergie" | |
| 67 | + ], | |
| 68 | + "cities": [ | |
| 69 | + "Sherbrooke" | |
| 70 | + ], | |
| 71 | + "url": "", | |
| 72 | + "org": "bdl-energie" | |
| 73 | + }, | |
| 74 | + { | |
| 75 | + "ats": "breezy", | |
| 76 | + "employer": "Black & McDonald", | |
| 77 | + "sectors": [ | |
| 78 | + "Construction" | |
| 79 | + ], | |
| 80 | + "cities": [ | |
| 81 | + "Montréal" | |
| 82 | + ], | |
| 83 | + "url": "", | |
| 84 | + "org": "black-mcdonald-francais" | |
| 85 | + }, | |
| 86 | + { | |
| 87 | + "ats": "breezy", | |
| 88 | + "employer": "Lindt & Sprüngli Canada", | |
| 89 | + "sectors": [ | |
| 90 | + "Commerce de détail" | |
| 91 | + ], | |
| 92 | + "cities": [ | |
| 93 | + "Gatineau" | |
| 94 | + ], | |
| 95 | + "url": "", | |
| 96 | + "org": "lindt-sprunglicanada" | |
| 97 | + }, | |
| 98 | + { | |
| 99 | + "ats": "breezy", | |
| 100 | + "employer": "Panda7", | |
| 101 | + "sectors": [ | |
| 102 | + "Assurance" | |
| 103 | + ], | |
| 104 | + "cities": [ | |
| 105 | + "Montréal" | |
| 106 | + ], | |
| 107 | + "url": "", | |
| 108 | + "org": "panda7" | |
| 109 | + }, | |
| 110 | + { | |
| 111 | + "ats": "breezy", | |
| 112 | + "employer": "Progesys", | |
| 113 | + "sectors": [ | |
| 114 | + "Ingénierie" | |
| 115 | + ], | |
| 116 | + "cities": [ | |
| 117 | + "Contrecœur" | |
| 118 | + ], | |
| 119 | + "url": "", | |
| 120 | + "org": "progesys-inc" | |
| 121 | + }, | |
| 122 | + { | |
| 123 | + "ats": "breezy", | |
| 124 | + "employer": "Sense Ingénierie", | |
| 125 | + "sectors": [ | |
| 126 | + "Ingénierie" | |
| 127 | + ], | |
| 128 | + "cities": [ | |
| 129 | + "Montréal" | |
| 130 | + ], | |
| 131 | + "url": "", | |
| 132 | + "org": "sense-engineering" | |
| 133 | + }, | |
| 134 | + { | |
| 135 | + "ats": "breezy", | |
| 136 | + "employer": "TELUS Santé — Cliniques", | |
| 137 | + "sectors": [ | |
| 138 | + "Santé" | |
| 139 | + ], | |
| 140 | + "cities": [ | |
| 141 | + "Montréal" | |
| 142 | + ], | |
| 143 | + "url": "", | |
| 144 | + "org": "telus-health-7fe6b0fe8614" | |
| 145 | + }, | |
| 146 | + { | |
| 147 | + "ats": "breezy", | |
| 148 | + "employer": "Turbulent", | |
| 149 | + "sectors": [ | |
| 150 | + "Jeu vidéo" | |
| 151 | + ], | |
| 152 | + "cities": [ | |
| 153 | + "Montréal" | |
| 154 | + ], | |
| 155 | + "url": "", | |
| 156 | + "org": "turbulent" | |
| 157 | + }, | |
| 158 | + { | |
| 159 | + "ats": "greenhouse", | |
| 160 | + "employer": "Alo Yoga", | |
| 161 | + "sectors": [ | |
| 162 | + "Commerce de détail" | |
| 163 | + ], | |
| 164 | + "cities": [ | |
| 165 | + "Laval" | |
| 166 | + ], | |
| 167 | + "url": "", | |
| 168 | + "org": "aloyoga" | |
| 169 | + }, | |
| 170 | + { | |
| 171 | + "ats": "greenhouse", | |
| 172 | + "employer": "AutoTrader Canada", | |
| 173 | + "sectors": [ | |
| 174 | + "Automobile" | |
| 175 | + ], | |
| 176 | + "cities": [ | |
| 177 | + "Longueuil" | |
| 178 | + ], | |
| 179 | + "url": "", | |
| 180 | + "org": "autotradercanada" | |
| 181 | + }, | |
| 182 | + { | |
| 183 | + "ats": "greenhouse", | |
| 184 | + "employer": "Cloud Chamber Montréal", | |
| 185 | + "sectors": [ | |
| 186 | + "Jeu vidéo" | |
| 187 | + ], | |
| 188 | + "cities": [ | |
| 189 | + "Montréal" | |
| 190 | + ], | |
| 191 | + "url": "", | |
| 192 | + "org": "cloudchamberfr" | |
| 193 | + }, | |
| 194 | + { | |
| 195 | + "ats": "greenhouse", | |
| 196 | + "employer": "Club Monaco", | |
| 197 | + "sectors": [ | |
| 198 | + "Commerce de détail" | |
| 199 | + ], | |
| 200 | + "cities": [ | |
| 201 | + "Montréal" | |
| 202 | + ], | |
| 203 | + "url": "", | |
| 204 | + "org": "clubmonaco" | |
| 205 | + }, | |
| 206 | + { | |
| 207 | + "ats": "greenhouse", | |
| 208 | + "employer": "Coveo", | |
| 209 | + "sectors": [ | |
| 210 | + "TI" | |
| 211 | + ], | |
| 212 | + "cities": [ | |
| 213 | + "Québec" | |
| 214 | + ], | |
| 215 | + "url": "", | |
| 216 | + "org": "coveofr" | |
| 217 | + }, | |
| 218 | + { | |
| 219 | + "ats": "greenhouse", | |
| 220 | + "employer": "Keel Infrastructure", | |
| 221 | + "sectors": [ | |
| 222 | + "Infrastructures" | |
| 223 | + ], | |
| 224 | + "cities": [ | |
| 225 | + "Montréal" | |
| 226 | + ], | |
| 227 | + "url": "", | |
| 228 | + "org": "keelinfrastructure" | |
| 229 | + }, | |
| 230 | + { | |
| 231 | + "ats": "greenhouse", | |
| 232 | + "employer": "Laporte Experts Conseils", | |
| 233 | + "sectors": [ | |
| 234 | + "Ingénierie" | |
| 235 | + ], | |
| 236 | + "cities": [ | |
| 237 | + "Montréal" | |
| 238 | + ], | |
| 239 | + "url": "", | |
| 240 | + "org": "laportefr" | |
| 241 | + }, | |
| 242 | + { | |
| 243 | + "ats": "greenhouse", | |
| 244 | + "employer": "La Senza", | |
| 245 | + "sectors": [ | |
| 246 | + "Commerce de détail" | |
| 247 | + ], | |
| 248 | + "cities": [ | |
| 249 | + "Québec" | |
| 250 | + ], | |
| 251 | + "url": "", | |
| 252 | + "org": "lasenza" | |
| 253 | + }, | |
| 254 | + { | |
| 255 | + "ats": "greenhouse", | |
| 256 | + "employer": "Latys Intelligence", | |
| 257 | + "sectors": [ | |
| 258 | + "TI" | |
| 259 | + ], | |
| 260 | + "cities": [ | |
| 261 | + "Montréal" | |
| 262 | + ], | |
| 263 | + "url": "", | |
| 264 | + "org": "latys" | |
| 265 | + }, | |
| 266 | + { | |
| 267 | + "ats": "greenhouse", | |
| 268 | + "employer": "LoiZéro", | |
| 269 | + "sectors": [ | |
| 270 | + "Services juridiques" | |
| 271 | + ], | |
| 272 | + "cities": [ | |
| 273 | + "Montréal" | |
| 274 | + ], | |
| 275 | + "url": "", | |
| 276 | + "org": "loizero" | |
| 277 | + }, | |
| 278 | + { | |
| 279 | + "ats": "greenhouse", | |
| 280 | + "employer": "Lyft", | |
| 281 | + "sectors": [ | |
| 282 | + "Transport" | |
| 283 | + ], | |
| 284 | + "cities": [ | |
| 285 | + "Montréal" | |
| 286 | + ], | |
| 287 | + "url": "", | |
| 288 | + "org": "lyft" | |
| 289 | + }, | |
| 290 | + { | |
| 291 | + "ats": "greenhouse", | |
| 292 | + "employer": "Mejuri", | |
| 293 | + "sectors": [ | |
| 294 | + "Commerce de détail" | |
| 295 | + ], | |
| 296 | + "cities": [ | |
| 297 | + "Montréal" | |
| 298 | + ], | |
| 299 | + "url": "", | |
| 300 | + "org": "mejuri" | |
| 301 | + }, | |
| 302 | + { | |
| 303 | + "ats": "greenhouse", | |
| 304 | + "employer": "Royal Vet", | |
| 305 | + "sectors": [ | |
| 306 | + "Santé animale" | |
| 307 | + ], | |
| 308 | + "cities": [ | |
| 309 | + "Montréal" | |
| 310 | + ], | |
| 311 | + "url": "", | |
| 312 | + "org": "royalvet" | |
| 313 | + }, | |
| 314 | + { | |
| 315 | + "ats": "greenhouse", | |
| 316 | + "employer": "Sony Pictures Imageworks", | |
| 317 | + "sectors": [ | |
| 318 | + "Effets visuels" | |
| 319 | + ], | |
| 320 | + "cities": [ | |
| 321 | + "Montréal" | |
| 322 | + ], | |
| 323 | + "url": "", | |
| 324 | + "org": "sonypicturesimageworks" | |
| 325 | + }, | |
| 326 | + { | |
| 327 | + "ats": "greenhouse", | |
| 328 | + "employer": "KRAFTON Montréal Studio", | |
| 329 | + "sectors": [ | |
| 330 | + "Jeu vidéo" | |
| 331 | + ], | |
| 332 | + "cities": [ | |
| 333 | + "Montréal" | |
| 334 | + ], | |
| 335 | + "url": "", | |
| 336 | + "org": "studiokraftonboard" | |
| 337 | + }, | |
| 338 | + { | |
| 339 | + "ats": "greenhouse", | |
| 340 | + "employer": "Terrestar Solutions", | |
| 341 | + "sectors": [ | |
| 342 | + "Télécommunications" | |
| 343 | + ], | |
| 344 | + "cities": [ | |
| 345 | + "Montréal" | |
| 346 | + ], | |
| 347 | + "url": "", | |
| 348 | + "org": "terrestarsolutionsfr" | |
| 349 | + }, | |
| 350 | + { | |
| 351 | + "ats": "greenhouse", | |
| 352 | + "employer": "Toboggan Labs", | |
| 353 | + "sectors": [ | |
| 354 | + "Jeu vidéo" | |
| 355 | + ], | |
| 356 | + "cities": [ | |
| 357 | + "Montréal" | |
| 358 | + ], | |
| 359 | + "url": "", | |
| 360 | + "org": "tobogganlabs" | |
| 361 | + }, | |
| 362 | + { | |
| 363 | + "ats": "lever", | |
| 364 | + "employer": "Cologix", | |
| 365 | + "sectors": [ | |
| 366 | + "TI" | |
| 367 | + ], | |
| 368 | + "cities": [ | |
| 369 | + "Montréal" | |
| 370 | + ], | |
| 371 | + "url": "", | |
| 372 | + "org": "cologix" | |
| 373 | + }, | |
| 374 | + { | |
| 375 | + "ats": "lever", | |
| 376 | + "employer": "Daniels Health Canada", | |
| 377 | + "sectors": [ | |
| 378 | + "Santé" | |
| 379 | + ], | |
| 380 | + "cities": [ | |
| 381 | + "Montréal" | |
| 382 | + ], | |
| 383 | + "url": "", | |
| 384 | + "org": "daniels-sharpsmart" | |
| 385 | + }, | |
| 386 | + { | |
| 387 | + "ats": "lever", | |
| 388 | + "employer": "Ecosystem Énergie", | |
| 389 | + "sectors": [ | |
| 390 | + "Énergie" | |
| 391 | + ], | |
| 392 | + "cities": [ | |
| 393 | + "Montréal" | |
| 394 | + ], | |
| 395 | + "url": "", | |
| 396 | + "org": "ecosystem" | |
| 397 | + }, | |
| 398 | + { | |
| 399 | + "ats": "lever", | |
| 400 | + "employer": "LRDG (Language Research Development Group)", | |
| 401 | + "sectors": [ | |
| 402 | + "Éducation" | |
| 403 | + ], | |
| 404 | + "cities": [ | |
| 405 | + "Montréal" | |
| 406 | + ], | |
| 407 | + "url": "", | |
| 408 | + "org": "lrdgonline" | |
| 409 | + }, | |
| 410 | + { | |
| 411 | + "ats": "lever", | |
| 412 | + "employer": "Maquette Virtuelle", | |
| 413 | + "sectors": [ | |
| 414 | + "Ingénierie" | |
| 415 | + ], | |
| 416 | + "cities": [ | |
| 417 | + "Montréal" | |
| 418 | + ], | |
| 419 | + "url": "", | |
| 420 | + "org": "maquettevirtuelle" | |
| 421 | + }, | |
| 422 | + { | |
| 423 | + "ats": "lever", | |
| 424 | + "employer": "Telesat", | |
| 425 | + "sectors": [ | |
| 426 | + "Aérospatiale" | |
| 427 | + ], | |
| 428 | + "cities": [ | |
| 429 | + "Gatineau" | |
| 430 | + ], | |
| 431 | + "url": "", | |
| 432 | + "org": "telesat" | |
| 433 | + }, | |
| 434 | + { | |
| 435 | + "ats": "recruitee", | |
| 436 | + "employer": "Agile DSS", | |
| 437 | + "sectors": [ | |
| 438 | + "TI" | |
| 439 | + ], | |
| 440 | + "cities": [ | |
| 441 | + "Montréal" | |
| 442 | + ], | |
| 443 | + "url": "", | |
| 444 | + "org": "agiledss" | |
| 445 | + }, | |
| 446 | + { | |
| 447 | + "ats": "recruitee", | |
| 448 | + "employer": "Avantage Plus", | |
| 449 | + "sectors": [ | |
| 450 | + "Services" | |
| 451 | + ], | |
| 452 | + "cities": [ | |
| 453 | + "Québec" | |
| 454 | + ], | |
| 455 | + "url": "", | |
| 456 | + "org": "avantageplus" | |
| 457 | + }, | |
| 458 | + { | |
| 459 | + "ats": "recruitee", | |
| 460 | + "employer": "Eurofins EnvironeX", | |
| 461 | + "sectors": [ | |
| 462 | + "Laboratoires" | |
| 463 | + ], | |
| 464 | + "cities": [ | |
| 465 | + "Longueuil" | |
| 466 | + ], | |
| 467 | + "url": "", | |
| 468 | + "org": "eurofinsenvironex" | |
| 469 | + }, | |
| 470 | + { | |
| 471 | + "ats": "recruitee", | |
| 472 | + "employer": "Pivot + Edge", | |
| 473 | + "sectors": [ | |
| 474 | + "Services" | |
| 475 | + ], | |
| 476 | + "cities": [ | |
| 477 | + "Gatineau" | |
| 478 | + ], | |
| 479 | + "url": "", | |
| 480 | + "org": "pivotandedge" | |
| 481 | + }, | |
| 482 | + { | |
| 483 | + "ats": "recruitee", | |
| 484 | + "employer": "Projevia", | |
| 485 | + "sectors": [ | |
| 486 | + "Ingénierie" | |
| 487 | + ], | |
| 488 | + "cities": [ | |
| 489 | + "Montréal" | |
| 490 | + ], | |
| 491 | + "url": "", | |
| 492 | + "org": "projevia" | |
| 493 | + }, | |
| 494 | + { | |
| 495 | + "ats": "recruitee", | |
| 496 | + "employer": "STAS", | |
| 497 | + "sectors": [ | |
| 498 | + "Fabrication" | |
| 499 | + ], | |
| 500 | + "cities": [ | |
| 501 | + "Saguenay" | |
| 502 | + ], | |
| 503 | + "url": "", | |
| 504 | + "org": "stasinc" | |
| 505 | + }, | |
| 506 | + { | |
| 507 | + "ats": "recruitee", | |
| 508 | + "employer": "Teknion Roy & Breton", | |
| 509 | + "sectors": [ | |
| 510 | + "Fabrication" | |
| 511 | + ], | |
| 512 | + "cities": [ | |
| 513 | + "Lévis" | |
| 514 | + ], | |
| 515 | + "url": "", | |
| 516 | + "org": "teknionroybreton" | |
| 517 | + }, | |
| 518 | + { | |
| 519 | + "ats": "smartrecruiters", | |
| 520 | + "employer": "Artelia Canada", | |
| 521 | + "sectors": [ | |
| 522 | + "Ingénierie" | |
| 523 | + ], | |
| 524 | + "cities": [ | |
| 525 | + "Montréal" | |
| 526 | + ], | |
| 527 | + "url": "", | |
| 528 | + "org": "artelia" | |
| 529 | + }, | |
| 530 | + { | |
| 531 | + "ats": "smartrecruiters", | |
| 532 | + "employer": "California Closets", | |
| 533 | + "sectors": [ | |
| 534 | + "Fabrication" | |
| 535 | + ], | |
| 536 | + "cities": [ | |
| 537 | + "Montréal" | |
| 538 | + ], | |
| 539 | + "url": "", | |
| 540 | + "org": "californiaclosets" | |
| 541 | + }, | |
| 542 | + { | |
| 543 | + "ats": "smartrecruiters", | |
| 544 | + "employer": "Centre multiethnique de Québec", | |
| 545 | + "sectors": [ | |
| 546 | + "Services sociaux" | |
| 547 | + ], | |
| 548 | + "cities": [ | |
| 549 | + "Québec" | |
| 550 | + ], | |
| 551 | + "url": "", | |
| 552 | + "org": "centremultiethniquedequbec" | |
| 553 | + }, | |
| 554 | + { | |
| 555 | + "ats": "smartrecruiters", | |
| 556 | + "employer": "École des entrepreneurs du Québec", | |
| 557 | + "sectors": [ | |
| 558 | + "Éducation" | |
| 559 | + ], | |
| 560 | + "cities": [ | |
| 561 | + "Montréal" | |
| 562 | + ], | |
| 563 | + "url": "", | |
| 564 | + "org": "coledesentrepreneursduqubec" | |
| 565 | + }, | |
| 566 | + { | |
| 567 | + "ats": "smartrecruiters", | |
| 568 | + "employer": "GURU Boisson Énergisante", | |
| 569 | + "sectors": [ | |
| 570 | + "Agroalimentaire" | |
| 571 | + ], | |
| 572 | + "cities": [ | |
| 573 | + "Montréal" | |
| 574 | + ], | |
| 575 | + "url": "", | |
| 576 | + "org": "guruorganicenergydrink" | |
| 577 | + }, | |
| 578 | + { | |
| 579 | + "ats": "smartrecruiters", | |
| 580 | + "employer": "H&M", | |
| 581 | + "sectors": [ | |
| 582 | + "Commerce de détail" | |
| 583 | + ], | |
| 584 | + "cities": [ | |
| 585 | + "Montréal" | |
| 586 | + ], | |
| 587 | + "url": "", | |
| 588 | + "org": "hmgroup" | |
| 589 | + }, | |
| 590 | + { | |
| 591 | + "ats": "smartrecruiters", | |
| 592 | + "employer": "Lemay", | |
| 593 | + "sectors": [ | |
| 594 | + "Architecture" | |
| 595 | + ], | |
| 596 | + "cities": [ | |
| 597 | + "Montréal" | |
| 598 | + ], | |
| 599 | + "url": "", | |
| 600 | + "org": "lemay" | |
| 601 | + }, | |
| 602 | + { | |
| 603 | + "ats": "smartrecruiters", | |
| 604 | + "employer": "Linen Chest", | |
| 605 | + "sectors": [ | |
| 606 | + "Commerce de détail" | |
| 607 | + ], | |
| 608 | + "cities": [ | |
| 609 | + "Laval" | |
| 610 | + ], | |
| 611 | + "url": "", | |
| 612 | + "org": "linenchest" | |
| 613 | + }, | |
| 614 | + { | |
| 615 | + "ats": "smartrecruiters", | |
| 616 | + "employer": "Renaud-Bray", | |
| 617 | + "sectors": [ | |
| 618 | + "Commerce de détail" | |
| 619 | + ], | |
| 620 | + "cities": [ | |
| 621 | + "Montréal" | |
| 622 | + ], | |
| 623 | + "url": "", | |
| 624 | + "org": "renaud-bray" | |
| 625 | + }, | |
| 626 | + { | |
| 627 | + "ats": "smartrecruiters", | |
| 628 | + "employer": "Sika Canada", | |
| 629 | + "sectors": [ | |
| 630 | + "Construction" | |
| 631 | + ], | |
| 632 | + "cities": [ | |
| 633 | + "Pointe-Claire" | |
| 634 | + ], | |
| 635 | + "url": "", | |
| 636 | + "org": "sikaag" | |
| 637 | + }, | |
| 638 | + { | |
| 639 | + "ats": "smartrecruiters", | |
| 640 | + "employer": "Sodexo Canada", | |
| 641 | + "sectors": [ | |
| 642 | + "Services alimentaires" | |
| 643 | + ], | |
| 644 | + "cities": [ | |
| 645 | + "Montréal" | |
| 646 | + ], | |
| 647 | + "url": "", | |
| 648 | + "org": "sodexocanadaltd" | |
| 649 | + }, | |
| 650 | + { | |
| 651 | + "ats": "smartrecruiters", | |
| 652 | + "employer": "Structube", | |
| 653 | + "sectors": [ | |
| 654 | + "Commerce de détail" | |
| 655 | + ], | |
| 656 | + "cities": [ | |
| 657 | + "Montréal" | |
| 658 | + ], | |
| 659 | + "url": "", | |
| 660 | + "org": "structube1" | |
| 661 | + }, | |
| 662 | + { | |
| 663 | + "ats": "smartrecruiters", | |
| 664 | + "employer": "Trupanion", | |
| 665 | + "sectors": [ | |
| 666 | + "Assurance" | |
| 667 | + ], | |
| 668 | + "cities": [ | |
| 669 | + "Montréal" | |
| 670 | + ], | |
| 671 | + "url": "", | |
| 672 | + "org": "trupanion1" | |
| 673 | + }, | |
| 674 | + { | |
| 675 | + "ats": "workable", | |
| 676 | + "employer": "Charlotte Tilbury", | |
| 677 | + "sectors": [ | |
| 678 | + "Commerce de détail" | |
| 679 | + ], | |
| 680 | + "cities": [ | |
| 681 | + "Montréal" | |
| 682 | + ], | |
| 683 | + "url": "", | |
| 684 | + "org": "charlotte-tilbury" | |
| 685 | + }, | |
| 686 | + { | |
| 687 | + "ats": "workable", | |
| 688 | + "employer": "CSN Collision", | |
| 689 | + "sectors": [ | |
| 690 | + "Automobile" | |
| 691 | + ], | |
| 692 | + "cities": [ | |
| 693 | + "Montréal" | |
| 694 | + ], | |
| 695 | + "url": "", | |
| 696 | + "org": "csncollision" | |
| 697 | + }, | |
| 698 | + { | |
| 699 | + "ats": "workable", | |
| 700 | + "employer": "CTS Foods Brokers", | |
| 701 | + "sectors": [ | |
| 702 | + "Agroalimentaire" | |
| 703 | + ], | |
| 704 | + "cities": [ | |
| 705 | + "Montréal" | |
| 706 | + ], | |
| 707 | + "url": "", | |
| 708 | + "org": "cts-foods-brokers-inc" | |
| 709 | + }, | |
| 710 | + { | |
| 711 | + "ats": "workable", | |
| 712 | + "employer": "Damotech", | |
| 713 | + "sectors": [ | |
| 714 | + "Fabrication" | |
| 715 | + ], | |
| 716 | + "cities": [ | |
| 717 | + "Boucherville" | |
| 718 | + ], | |
| 719 | + "url": "", | |
| 720 | + "org": "damotech" | |
| 721 | + }, | |
| 722 | + { | |
| 723 | + "ats": "workable", | |
| 724 | + "employer": "Delmar International", | |
| 725 | + "sectors": [ | |
| 726 | + "Logistique" | |
| 727 | + ], | |
| 728 | + "cities": [ | |
| 729 | + "Montréal" | |
| 730 | + ], | |
| 731 | + "url": "", | |
| 732 | + "org": "delmar-international-inc" | |
| 733 | + }, | |
| 734 | + { | |
| 735 | + "ats": "workable", | |
| 736 | + "employer": "Exportation et développement Canada (EDC)", | |
| 737 | + "sectors": [ | |
| 738 | + "Finance" | |
| 739 | + ], | |
| 740 | + "cities": [ | |
| 741 | + "Montréal" | |
| 742 | + ], | |
| 743 | + "url": "", | |
| 744 | + "org": "export-development-canada" | |
| 745 | + }, | |
| 746 | + { | |
| 747 | + "ats": "workable", | |
| 748 | + "employer": "Financeit", | |
| 749 | + "sectors": [ | |
| 750 | + "Finance" | |
| 751 | + ], | |
| 752 | + "cities": [ | |
| 753 | + "Montréal" | |
| 754 | + ], | |
| 755 | + "url": "", | |
| 756 | + "org": "financeit" | |
| 757 | + }, | |
| 758 | + { | |
| 759 | + "ats": "workable", | |
| 760 | + "employer": "FLO (AddÉnergie)", | |
| 761 | + "sectors": [ | |
| 762 | + "Énergie" | |
| 763 | + ], | |
| 764 | + "cities": [ | |
| 765 | + "Québec" | |
| 766 | + ], | |
| 767 | + "url": "", | |
| 768 | + "org": "flo-addenergie" | |
| 769 | + }, | |
| 770 | + { | |
| 771 | + "ats": "workable", | |
| 772 | + "employer": "Keywords Studios", | |
| 773 | + "sectors": [ | |
| 774 | + "Jeu vidéo" | |
| 775 | + ], | |
| 776 | + "cities": [ | |
| 777 | + "Montréal" | |
| 778 | + ], | |
| 779 | + "url": "", | |
| 780 | + "org": "keywords-intl1" | |
| 781 | + }, | |
| 782 | + { | |
| 783 | + "ats": "workable", | |
| 784 | + "employer": "Rentokil Initial", | |
| 785 | + "sectors": [ | |
| 786 | + "Services" | |
| 787 | + ], | |
| 788 | + "cities": [ | |
| 789 | + "Montréal" | |
| 790 | + ], | |
| 791 | + "url": "", | |
| 792 | + "org": "rentokil-initial" | |
| 793 | + }, | |
| 794 | + { | |
| 795 | + "ats": "workable", | |
| 796 | + "employer": "Starlink Aviation", | |
| 797 | + "sectors": [ | |
| 798 | + "Aérospatiale" | |
| 799 | + ], | |
| 800 | + "cities": [ | |
| 801 | + "Dorval" | |
| 802 | + ], | |
| 803 | + "url": "", | |
| 804 | + "org": "starlink-aviation" | |
| 805 | + }, | |
| 806 | + { | |
| 807 | + "ats": "workday", | |
| 808 | + "employer": "Abbott", | |
| 809 | + "sectors": [ | |
| 810 | + "Santé" | |
| 811 | + ], | |
| 812 | + "cities": [ | |
| 813 | + "Montréal" | |
| 814 | + ], | |
| 815 | + "url": "", | |
| 816 | + "tenant": "abbott", | |
| 817 | + "host": "wd5", | |
| 818 | + "site": "abbottcareers" | |
| 819 | + }, | |
| 820 | + { | |
| 821 | + "ats": "workday", | |
| 822 | + "employer": "Allstate Canada", | |
| 823 | + "sectors": [ | |
| 824 | + "Assurance" | |
| 825 | + ], | |
| 826 | + "cities": [ | |
| 827 | + "Québec" | |
| 828 | + ], | |
| 829 | + "url": "", | |
| 830 | + "tenant": "allstate", | |
| 831 | + "host": "wd5", | |
| 832 | + "site": "allstate_careers" | |
| 833 | + }, | |
| 834 | + { | |
| 835 | + "ats": "workday", | |
| 836 | + "employer": "Aritzia", | |
| 837 | + "sectors": [ | |
| 838 | + "Commerce de détail" | |
| 839 | + ], | |
| 840 | + "cities": [ | |
| 841 | + "Laval" | |
| 842 | + ], | |
| 843 | + "url": "", | |
| 844 | + "tenant": "aritzia", | |
| 845 | + "host": "wd3", | |
| 846 | + "site": "external" | |
| 847 | + }, | |
| 848 | + { | |
| 849 | + "ats": "workday", | |
| 850 | + "employer": "Cineplex", | |
| 851 | + "sectors": [ | |
| 852 | + "Divertissement" | |
| 853 | + ], | |
| 854 | + "cities": [ | |
| 855 | + "Gatineau" | |
| 856 | + ], | |
| 857 | + "url": "", | |
| 858 | + "tenant": "cineplex", | |
| 859 | + "host": "wd3", | |
| 860 | + "site": "Cineplex" | |
| 861 | + }, | |
| 862 | + { | |
| 863 | + "ats": "workday", | |
| 864 | + "employer": "Consignaction (AQRCB)", | |
| 865 | + "sectors": [ | |
| 866 | + "Environnement" | |
| 867 | + ], | |
| 868 | + "cities": [ | |
| 869 | + "Montréal" | |
| 870 | + ], | |
| 871 | + "url": "", | |
| 872 | + "tenant": "consignaction", | |
| 873 | + "host": "wd10", | |
| 874 | + "site": "Consignaction_carrieres" | |
| 875 | + }, | |
| 876 | + { | |
| 877 | + "ats": "workday", | |
| 878 | + "employer": "Dentalcorp", | |
| 879 | + "sectors": [ | |
| 880 | + "Santé" | |
| 881 | + ], | |
| 882 | + "cities": [ | |
| 883 | + "Montréal" | |
| 884 | + ], | |
| 885 | + "url": "", | |
| 886 | + "tenant": "dentalcorp", | |
| 887 | + "host": "wd3", | |
| 888 | + "site": "dentalcorp" | |
| 889 | + }, | |
| 890 | + { | |
| 891 | + "ats": "workday", | |
| 892 | + "employer": "FedEx Express Canada", | |
| 893 | + "sectors": [ | |
| 894 | + "Logistique" | |
| 895 | + ], | |
| 896 | + "cities": [ | |
| 897 | + "Québec" | |
| 898 | + ], | |
| 899 | + "url": "", | |
| 900 | + "tenant": "fedex", | |
| 901 | + "host": "wd1", | |
| 902 | + "site": "FXE-Canada_External_Career_Site" | |
| 903 | + }, | |
| 904 | + { | |
| 905 | + "ats": "workday", | |
| 906 | + "employer": "Fiserv", | |
| 907 | + "sectors": [ | |
| 908 | + "Finance" | |
| 909 | + ], | |
| 910 | + "cities": [ | |
| 911 | + "Laval" | |
| 912 | + ], | |
| 913 | + "url": "", | |
| 914 | + "tenant": "fiserv", | |
| 915 | + "host": "wd5", | |
| 916 | + "site": "EXT" | |
| 917 | + }, | |
| 918 | + { | |
| 919 | + "ats": "workday", | |
| 920 | + "employer": "Guillevin International", | |
| 921 | + "sectors": [ | |
| 922 | + "Distribution" | |
| 923 | + ], | |
| 924 | + "cities": [ | |
| 925 | + "Montréal" | |
| 926 | + ], | |
| 927 | + "url": "", | |
| 928 | + "tenant": "guillevin", | |
| 929 | + "host": "wd3", | |
| 930 | + "site": "GIC" | |
| 931 | + }, | |
| 932 | + { | |
| 933 | + "ats": "workday", | |
| 934 | + "employer": "Intelcom (Dragonfly)", | |
| 935 | + "sectors": [ | |
| 936 | + "Logistique" | |
| 937 | + ], | |
| 938 | + "cities": [ | |
| 939 | + "Montréal" | |
| 940 | + ], | |
| 941 | + "url": "", | |
| 942 | + "tenant": "intelcomgroup", | |
| 943 | + "host": "wd3", | |
| 944 | + "site": "Intelcom" | |
| 945 | + }, | |
| 946 | + { | |
| 947 | + "ats": "workday", | |
| 948 | + "employer": "JLL", | |
| 949 | + "sectors": [ | |
| 950 | + "Immobilier" | |
| 951 | + ], | |
| 952 | + "cities": [ | |
| 953 | + "Montréal" | |
| 954 | + ], | |
| 955 | + "url": "", | |
| 956 | + "tenant": "jll", | |
| 957 | + "host": "wd1", | |
| 958 | + "site": "jllcareers" | |
| 959 | + }, | |
| 960 | + { | |
| 961 | + "ats": "workday", | |
| 962 | + "employer": "OPENLANE Canada", | |
| 963 | + "sectors": [ | |
| 964 | + "Automobile" | |
| 965 | + ], | |
| 966 | + "cities": [ | |
| 967 | + "Montréal" | |
| 968 | + ], | |
| 969 | + "url": "", | |
| 970 | + "tenant": "openlane", | |
| 971 | + "host": "wd115", | |
| 972 | + "site": "OPENLANE_Careers" | |
| 973 | + }, | |
| 974 | + { | |
| 975 | + "ats": "workday", | |
| 976 | + "employer": "Shell Canada", | |
| 977 | + "sectors": [ | |
| 978 | + "Énergie" | |
| 979 | + ], | |
| 980 | + "cities": [ | |
| 981 | + "Montréal-Est" | |
| 982 | + ], | |
| 983 | + "url": "", | |
| 984 | + "tenant": "shell", | |
| 985 | + "host": "wd3", | |
| 986 | + "site": "ShellCareers" | |
| 987 | + }, | |
| 988 | + { | |
| 989 | + "ats": "workday", | |
| 990 | + "employer": "La Maison Simons", | |
| 991 | + "sectors": [ | |
| 992 | + "Commerce de détail" | |
| 993 | + ], | |
| 994 | + "cities": [ | |
| 995 | + "Québec" | |
| 996 | + ], | |
| 997 | + "url": "", | |
| 998 | + "tenant": "simons", | |
| 999 | + "host": "wd10", | |
| 1000 | + "site": "Simons_Site" | |
| 1001 | + }, | |
| 1002 | + { | |
| 1003 | + "ats": "workday", | |
| 1004 | + "employer": "TJX Canada (Winners, HomeSense, Marshalls)", | |
| 1005 | + "sectors": [ | |
| 1006 | + "Commerce de détail" | |
| 1007 | + ], | |
| 1008 | + "cities": [ | |
| 1009 | + "Gatineau" | |
| 1010 | + ], | |
| 1011 | + "url": "", | |
| 1012 | + "tenant": "tjx", | |
| 1013 | + "host": "wd1", | |
| 1014 | + "site": "TJX_EXTERNAL" | |
| 1015 | + }, | |
| 1016 | + { | |
| 1017 | + "ats": "workday", | |
| 1018 | + "employer": "VF Corporation (The North Face, Vans)", | |
| 1019 | + "sectors": [ | |
| 1020 | + "Commerce de détail" | |
| 1021 | + ], | |
| 1022 | + "cities": [ | |
| 1023 | + "Montréal" | |
| 1024 | + ], | |
| 1025 | + "url": "", | |
| 1026 | + "tenant": "vfc", | |
| 1027 | + "host": "wd5", | |
| 1028 | + "site": "vfc_careers" | |
| 1029 | + }, | |
| 1030 | + { | |
| 1031 | + "ats": "workday", | |
| 1032 | + "employer": "ZOLL Medical", | |
| 1033 | + "sectors": [ | |
| 1034 | + "Santé" | |
| 1035 | + ], | |
| 1036 | + "cities": [ | |
| 1037 | + "Montréal" | |
| 1038 | + ], | |
| 1039 | + "url": "", | |
| 1040 | + "tenant": "zoll", | |
| 1041 | + "host": "wd5", | |
| 1042 | + "site": "ZOLLMedicalCorp" | |
| 1043 | + }, | |
| 1044 | + { | |
| 1045 | + "ats": "dayforce", | |
| 1046 | + "source_id": "acadierouge", | |
| 1047 | + "ns": "acvrouge", | |
| 1048 | + "board": "CANDIDATEPORTAL", | |
| 1049 | + "employer": "Air Canada Rouge", | |
| 1050 | + "sectors": [ | |
| 1051 | + "Aérospatiale" | |
| 1052 | + ], | |
| 1053 | + "cities": [ | |
| 1054 | + "Montréal" | |
| 1055 | + ] | |
| 1056 | + }, | |
| 1057 | + { | |
| 1058 | + "ats": "dayforce", | |
| 1059 | + "source_id": "groupeagf", | |
| 1060 | + "ns": "agfgroup", | |
| 1061 | + "board": "CANDIDATEPORTAL", | |
| 1062 | + "employer": "Groupe AGF", | |
| 1063 | + "sectors": [ | |
| 1064 | + "Construction" | |
| 1065 | + ], | |
| 1066 | + "cities": [ | |
| 1067 | + "Longueuil" | |
| 1068 | + ] | |
| 1069 | + }, | |
| 1070 | + { | |
| 1071 | + "ats": "dayforce", | |
| 1072 | + "source_id": "portquebec", | |
| 1073 | + "ns": "apq", | |
| 1074 | + "board": "CANDIDATEPORTAL", | |
| 1075 | + "employer": "Administration portuaire de Québec", | |
| 1076 | + "sectors": [ | |
| 1077 | + "Transport" | |
| 1078 | + ], | |
| 1079 | + "cities": [ | |
| 1080 | + "Québec" | |
| 1081 | + ] | |
| 1082 | + }, | |
| 1083 | + { | |
| 1084 | + "ats": "dayforce", | |
| 1085 | + "source_id": "bpa", | |
| 1086 | + "ns": "bpapointca", | |
| 1087 | + "board": "CANDIDATEPORTAL", | |
| 1088 | + "employer": "BPA (Experts-conseils)", | |
| 1089 | + "sectors": [ | |
| 1090 | + "Ingénierie" | |
| 1091 | + ], | |
| 1092 | + "cities": [ | |
| 1093 | + "Montréal" | |
| 1094 | + ] | |
| 1095 | + }, | |
| 1096 | + { | |
| 1097 | + "ats": "dayforce", | |
| 1098 | + "source_id": "excellencepeterbilt", | |
| 1099 | + "ns": "camion", | |
| 1100 | + "board": "CANDIDATEPORTAL", | |
| 1101 | + "employer": "Camions Excellence Peterbilt", | |
| 1102 | + "sectors": [ | |
| 1103 | + "Automobile" | |
| 1104 | + ], | |
| 1105 | + "cities": [ | |
| 1106 | + "Sainte-Julie" | |
| 1107 | + ] | |
| 1108 | + }, | |
| 1109 | + { | |
| 1110 | + "ats": "dayforce", | |
| 1111 | + "source_id": "darefoods", | |
| 1112 | + "ns": "darefoods", | |
| 1113 | + "board": "CANDIDATEPORTAL", | |
| 1114 | + "employer": "Dare Foods", | |
| 1115 | + "sectors": [ | |
| 1116 | + "Agroalimentaire" | |
| 1117 | + ], | |
| 1118 | + "cities": [ | |
| 1119 | + "Sainte-Marthe-sur-le-Lac" | |
| 1120 | + ] | |
| 1121 | + }, | |
| 1122 | + { | |
| 1123 | + "ats": "dayforce", | |
| 1124 | + "source_id": "eastpenn", | |
| 1125 | + "ns": "eastpenn", | |
| 1126 | + "board": "CANDIDATEPORTAL", | |
| 1127 | + "employer": "East Penn Canada", | |
| 1128 | + "sectors": [ | |
| 1129 | + "Distribution" | |
| 1130 | + ], | |
| 1131 | + "cities": [ | |
| 1132 | + "Laval" | |
| 1133 | + ] | |
| 1134 | + }, | |
| 1135 | + { | |
| 1136 | + "ats": "dayforce", | |
| 1137 | + "source_id": "eidosmontreal", | |
| 1138 | + "ns": "eic", | |
| 1139 | + "board": "CANDIDATEPORTAL", | |
| 1140 | + "employer": "Eidos-Montréal", | |
| 1141 | + "sectors": [ | |
| 1142 | + "Jeu vidéo" | |
| 1143 | + ], | |
| 1144 | + "cities": [ | |
| 1145 | + "Montréal" | |
| 1146 | + ] | |
| 1147 | + }, | |
| 1148 | + { | |
| 1149 | + "ats": "dayforce", | |
| 1150 | + "source_id": "fastcocanada", | |
| 1151 | + "ns": "fastco", | |
| 1152 | + "board": "CANDIDATEPORTAL", | |
| 1153 | + "employer": "Fastco Canada", | |
| 1154 | + "sectors": [ | |
| 1155 | + "Fabrication" | |
| 1156 | + ], | |
| 1157 | + "cities": [ | |
| 1158 | + "Pointe-Claire" | |
| 1159 | + ] | |
| 1160 | + }, | |
| 1161 | + { | |
| 1162 | + "ats": "dayforce", | |
| 1163 | + "source_id": "bleufeu", | |
| 1164 | + "ns": "feiq", | |
| 1165 | + "board": "CANDIDATEPORTAL", | |
| 1166 | + "employer": "BLEUFEU (Festival d'été de Québec)", | |
| 1167 | + "sectors": [ | |
| 1168 | + "Divertissement" | |
| 1169 | + ], | |
| 1170 | + "cities": [ | |
| 1171 | + "Québec" | |
| 1172 | + ] | |
| 1173 | + }, | |
| 1174 | + { | |
| 1175 | + "ats": "dayforce", | |
| 1176 | + "source_id": "groupemaurice", | |
| 1177 | + "ns": "gm", | |
| 1178 | + "board": "CANDIDATEPORTAL", | |
| 1179 | + "employer": "Le Groupe Maurice", | |
| 1180 | + "sectors": [ | |
| 1181 | + "Santé" | |
| 1182 | + ], | |
| 1183 | + "cities": [ | |
| 1184 | + "Montréal" | |
| 1185 | + ] | |
| 1186 | + }, | |
| 1187 | + { | |
| 1188 | + "ats": "dayforce", | |
| 1189 | + "source_id": "graycollection", | |
| 1190 | + "ns": "graycorp", | |
| 1191 | + "board": "CANDIDATEPORTAL", | |
| 1192 | + "employer": "Gray Collection (Groupe Antonopoulos)", | |
| 1193 | + "sectors": [ | |
| 1194 | + "Hôtellerie" | |
| 1195 | + ], | |
| 1196 | + "cities": [ | |
| 1197 | + "Montréal" | |
| 1198 | + ] | |
| 1199 | + }, | |
| 1200 | + { | |
| 1201 | + "ats": "dayforce", | |
| 1202 | + "source_id": "groupech", | |
| 1203 | + "ns": "groupech", | |
| 1204 | + "board": "CANDIDATEPORTAL", | |
| 1205 | + "employer": "Groupe CH (Canadiens de Montréal, Centre Bell)", | |
| 1206 | + "sectors": [ | |
| 1207 | + "Divertissement" | |
| 1208 | + ], | |
| 1209 | + "cities": [ | |
| 1210 | + "Montréal" | |
| 1211 | + ] | |
| 1212 | + }, | |
| 1213 | + { | |
| 1214 | + "ats": "dayforce", | |
| 1215 | + "source_id": "groupemach", | |
| 1216 | + "ns": "groupemach", | |
| 1217 | + "board": "CANDIDATEPORTAL", | |
| 1218 | + "employer": "Groupe Mach", | |
| 1219 | + "sectors": [ | |
| 1220 | + "Immobilier" | |
| 1221 | + ], | |
| 1222 | + "cities": [ | |
| 1223 | + "Montréal" | |
| 1224 | + ] | |
| 1225 | + }, | |
| 1226 | + { | |
| 1227 | + "ats": "dayforce", | |
| 1228 | + "source_id": "jdsports", | |
| 1229 | + "ns": "jdsf", | |
| 1230 | + "board": "CANDIDATEPORTAL", | |
| 1231 | + "employer": "JD Sports Canada", | |
| 1232 | + "sectors": [ | |
| 1233 | + "Commerce de détail" | |
| 1234 | + ], | |
| 1235 | + "cities": [ | |
| 1236 | + "Montréal" | |
| 1237 | + ] | |
| 1238 | + }, | |
| 1239 | + { | |
| 1240 | + "ats": "dayforce", | |
| 1241 | + "source_id": "lauracanada", | |
| 1242 | + "ns": "laurashoppe", | |
| 1243 | + "board": "CANDIDATEPORTAL", | |
| 1244 | + "employer": "Laura Canada", | |
| 1245 | + "sectors": [ | |
| 1246 | + "Commerce de détail" | |
| 1247 | + ], | |
| 1248 | + "cities": [ | |
| 1249 | + "Laval" | |
| 1250 | + ] | |
| 1251 | + }, | |
| 1252 | + { | |
| 1253 | + "ats": "dayforce", | |
| 1254 | + "source_id": "lavieenrose", | |
| 1255 | + "ns": "lavieenrose", | |
| 1256 | + "board": "CANDIDATEPORTAL", | |
| 1257 | + "employer": "La Vie en Rose", | |
| 1258 | + "sectors": [ | |
| 1259 | + "Commerce de détail" | |
| 1260 | + ], | |
| 1261 | + "cities": [ | |
| 1262 | + "Montréal" | |
| 1263 | + ] | |
| 1264 | + }, | |
| 1265 | + { | |
| 1266 | + "ats": "dayforce", | |
| 1267 | + "source_id": "nationex", | |
| 1268 | + "ns": "nationex", | |
| 1269 | + "board": "CANDIDATEPORTAL", | |
| 1270 | + "employer": "Nationex", | |
| 1271 | + "sectors": [ | |
| 1272 | + "Logistique" | |
| 1273 | + ], | |
| 1274 | + "cities": [ | |
| 1275 | + "Longueuil" | |
| 1276 | + ] | |
| 1277 | + }, | |
| 1278 | + { | |
| 1279 | + "ats": "dayforce", | |
| 1280 | + "source_id": "realstar", | |
| 1281 | + "ns": "realstar", | |
| 1282 | + "board": "CANDIDATEPORTAL", | |
| 1283 | + "employer": "Realstar", | |
| 1284 | + "sectors": [ | |
| 1285 | + "Immobilier" | |
| 1286 | + ], | |
| 1287 | + "cities": [ | |
| 1288 | + "Montréal" | |
| 1289 | + ] | |
| 1290 | + }, | |
| 1291 | + { | |
| 1292 | + "ats": "dayforce", | |
| 1293 | + "source_id": "reflector", | |
| 1294 | + "ns": "ref", | |
| 1295 | + "board": "CANDIDATEPORTAL", | |
| 1296 | + "employer": "Reflector Entertainment", | |
| 1297 | + "sectors": [ | |
| 1298 | + "Jeu vidéo" | |
| 1299 | + ], | |
| 1300 | + "cities": [ | |
| 1301 | + "Montréal" | |
| 1302 | + ] | |
| 1303 | + }, | |
| 1304 | + { | |
| 1305 | + "ats": "dayforce", | |
| 1306 | + "source_id": "runningroom", | |
| 1307 | + "ns": "runningroom", | |
| 1308 | + "board": "CANDIDATEPORTAL", | |
| 1309 | + "employer": "Running Room Canada", | |
| 1310 | + "sectors": [ | |
| 1311 | + "Commerce de détail" | |
| 1312 | + ], | |
| 1313 | + "cities": [ | |
| 1314 | + "Montréal" | |
| 1315 | + ] | |
| 1316 | + }, | |
| 1317 | + { | |
| 1318 | + "ats": "dayforce", | |
| 1319 | + "source_id": "soprema", | |
| 1320 | + "ns": "soprema", | |
| 1321 | + "board": "CANDIDATEPORTAL", | |
| 1322 | + "employer": "Soprema", | |
| 1323 | + "sectors": [ | |
| 1324 | + "Fabrication" | |
| 1325 | + ], | |
| 1326 | + "cities": [ | |
| 1327 | + "Drummondville" | |
| 1328 | + ] | |
| 1329 | + }, | |
| 1330 | + { | |
| 1331 | + "ats": "dayforce", | |
| 1332 | + "source_id": "spectrapremium", | |
| 1333 | + "ns": "spectra", | |
| 1334 | + "board": "CANDIDATEPORTAL", | |
| 1335 | + "employer": "Spectra Premium", | |
| 1336 | + "sectors": [ | |
| 1337 | + "Fabrication" | |
| 1338 | + ], | |
| 1339 | + "cities": [ | |
| 1340 | + "Boucherville" | |
| 1341 | + ] | |
| 1342 | + }, | |
| 1343 | + { | |
| 1344 | + "ats": "dayforce", | |
| 1345 | + "source_id": "storagemart", | |
| 1346 | + "ns": "storagemart", | |
| 1347 | + "board": "CANDIDATEPORTAL", | |
| 1348 | + "employer": "StorageMart", | |
| 1349 | + "sectors": [ | |
| 1350 | + "Services" | |
| 1351 | + ], | |
| 1352 | + "cities": [ | |
| 1353 | + "Québec" | |
| 1354 | + ] | |
| 1355 | + }, | |
| 1356 | + { | |
| 1357 | + "ats": "dayforce", | |
| 1358 | + "source_id": "unitedservices", | |
| 1359 | + "ns": "unitedservicesgroup", | |
| 1360 | + "board": "CANDIDATEPORTAL", | |
| 1361 | + "employer": "United Services Group", | |
| 1362 | + "sectors": [ | |
| 1363 | + "Services" | |
| 1364 | + ], | |
| 1365 | + "cities": [ | |
| 1366 | + "Montréal" | |
| 1367 | + ] | |
| 1368 | + }, | |
| 1369 | + { | |
| 1370 | + "ats": "dayforce", | |
| 1371 | + "source_id": "vinfastcanada", | |
| 1372 | + "ns": "vinfast", | |
| 1373 | + "board": "CANDIDATEPORTAL", | |
| 1374 | + "employer": "VinFast Canada", | |
| 1375 | + "sectors": [ | |
| 1376 | + "Automobile" | |
| 1377 | + ], | |
| 1378 | + "cities": [ | |
| 1379 | + "Laval" | |
| 1380 | + ] | |
| 1381 | + } | |
| 1382 | +] | |
| \ No newline at end of file | ||
modified
data/sources.json
+4409 −3088
@@ -1,3090 +1,4411 @@ | ||
| 1 | 1 | { |
| 2 | − "_meta": { | |
| 3 | − "project": "Job·Ka — Groupe KA", | |
| 4 | − "author": "Simon-Pierre Boucher <contact@spboucher.ai>", | |
| 5 | − "role": "Registre descriptif des sources (alimente la page Sources)", | |
| 6 | − "updated": "2026-08-19", | |
| 7 | − "counts": { | |
| 8 | − "employeurs_directs": 240, | |
| 9 | − "plateformes_ats": 19, | |
| 10 | − "portails": 3, | |
| 11 | − "depot_direct": 1, | |
| 12 | − "reseaux_multi_employeurs": 1 | |
| 13 | − }, | |
| 14 | − "ats": [ | |
| 15 | − "adp", | |
| 16 | − "ashby", | |
| 17 | − "bamboohr", | |
| 18 | − "breezy", | |
| 19 | − "digitalrecruiters", | |
| 20 | − "greenhouse", | |
| 21 | − "icims", | |
| 22 | − "lever", | |
| 23 | − "njoyn", | |
| 24 | − "recruitee", | |
| 25 | − "smartrecruiters", | |
| 26 | − "successfactors", | |
| 27 | − "taleo", | |
| 28 | − "taleo_tbe", | |
| 29 | − "ultipro", | |
| 30 | − "workable", | |
| 31 | − "workday", | |
| 32 | − "workland", | |
| 33 | − "wpjobmanager" | |
| 34 | − ], | |
| 35 | − "docs": "docs/connecteurs/INDEX.md (fiches générées par scripts/gen_connector_docs.py) ; conformité : docs/CONFORMITE.md" | |
| 36 | − }, | |
| 37 | − "sources": [ | |
| 38 | − { | |
| 39 | − "id": "adeleexpressfr", | |
| 40 | − "name": "Adèle Express", | |
| 41 | − "url": "", | |
| 42 | − "careers_url": "https://adeleexpressfr.recruitee.com", | |
| 43 | − "sectors": [ | |
| 44 | − "Transport" | |
| 45 | − ], | |
| 46 | − "connector": "recruitee", | |
| 47 | − "status": "actif", | |
| 48 | − "region": "Montréal" | |
| 49 | − }, | |
| 50 | − { | |
| 51 | − "id": "adi_albert_davidson_industries", | |
| 52 | − "name": "ADI - Albert Davidson Industries", | |
| 53 | − "url": "", | |
| 54 | − "careers_url": "https://adi-albert-davidson-industries.breezy.hr", | |
| 55 | − "sectors": [ | |
| 56 | − "Manufacture" | |
| 57 | − ], | |
| 58 | − "connector": "breezy", | |
| 59 | − "status": "actif", | |
| 60 | − "region": "Pointe-Claire" | |
| 61 | − }, | |
| 62 | − { | |
| 63 | − "id": "agnico_eagle", | |
| 64 | − "name": "Agnico Eagle Mines", | |
| 65 | − "url": "https://www.agnicoeagle.com", | |
| 66 | − "careers_url": "https://agnicoeagle.taleo.net/careersection/2/jobsearch.ftl?lang=fr", | |
| 67 | − "sectors": [ | |
| 68 | − "Mines", | |
| 69 | − "Ingénierie", | |
| 70 | − "Métiers spécialisés" | |
| 71 | − ], | |
| 72 | − "connector": "taleo", | |
| 73 | − "status": "actif", | |
| 74 | − "region": "Abitibi-Témiscamingue, Malartic, Rouyn-Noranda" | |
| 75 | − }, | |
| 76 | − { | |
| 77 | − "id": "agropur", | |
| 78 | − "name": "Agropur", | |
| 79 | − "url": "https://www.agropur.com", | |
| 80 | − "careers_url": "https://agropur.wd3.myworkdayjobs.com/Agropur_Careers", | |
| 81 | − "sectors": [ | |
| 82 | − "Agroalimentaire", | |
| 83 | − "Production" | |
| 84 | − ], | |
| 85 | − "connector": "workday", | |
| 86 | − "status": "actif", | |
| 87 | − "region": "Longueuil / province" | |
| 88 | − }, | |
| 89 | − { | |
| 90 | − "id": "airbus", | |
| 91 | − "name": "Airbus Canada", | |
| 92 | − "url": "https://airbus.com", | |
| 93 | − "careers_url": "https://ag.wd3.myworkdayjobs.com/Airbus", | |
| 94 | − "sectors": [], | |
| 95 | − "connector": "workday", | |
| 96 | − "status": "actif", | |
| 97 | − "region": "Mirabel" | |
| 98 | − }, | |
| 99 | − { | |
| 100 | − "id": "ajwalter", | |
| 101 | − "name": "AJ Walter Aviation", | |
| 102 | − "url": "", | |
| 103 | − "careers_url": "https://ajwalter.recruitee.com", | |
| 104 | − "sectors": [ | |
| 105 | − "Aéronautique" | |
| 106 | − ], | |
| 107 | − "connector": "recruitee", | |
| 108 | − "status": "actif", | |
| 109 | − "region": "Montréal" | |
| 110 | − }, | |
| 111 | − { | |
| 112 | − "id": "alayacare", | |
| 113 | − "name": "AlayaCare", | |
| 114 | − "url": "https://www.alayacare.com", | |
| 115 | − "careers_url": "https://job-boards.greenhouse.io/alayacare", | |
| 116 | − "sectors": [ | |
| 117 | − "TI", | |
| 118 | − "Santé" | |
| 119 | − ], | |
| 120 | − "connector": "greenhouse", | |
| 121 | − "status": "actif", | |
| 122 | − "region": "Montréal" | |
| 123 | − }, | |
| 124 | − { | |
| 125 | − "id": "alcoa", | |
| 126 | − "name": "Alcoa Canada", | |
| 127 | − "url": "https://alcoa.com", | |
| 128 | − "careers_url": "https://alcoa.wd5.myworkdayjobs.com/Careers", | |
| 129 | − "sectors": [], | |
| 130 | − "connector": "workday", | |
| 131 | − "status": "actif", | |
| 132 | − "region": "Baie-Comeau" | |
| 133 | − }, | |
| 134 | − { | |
| 135 | − "id": "alimentiv_2", | |
| 136 | − "name": "Alimentiv", | |
| 137 | − "url": "", | |
| 138 | − "careers_url": "https://jobs.lever.co/alimentiv-2", | |
| 139 | − "sectors": [ | |
| 140 | − "Recherche clinique" | |
| 141 | − ], | |
| 142 | − "connector": "lever", | |
| 143 | − "status": "actif", | |
| 144 | − "region": "Montréal, Québec" | |
| 145 | − }, | |
| 146 | − { | |
| 147 | − "id": "alphanumeric_systems", | |
| 148 | − "name": "Alphanumeric Systems", | |
| 149 | − "url": "", | |
| 150 | − "careers_url": "https://alphanumeric-systems.breezy.hr", | |
| 151 | − "sectors": [ | |
| 152 | − "TI", | |
| 153 | − "Santé" | |
| 154 | − ], | |
| 155 | − "connector": "breezy", | |
| 156 | − "status": "actif", | |
| 157 | − "region": "Montréal, Sainte-Foy" | |
| 158 | − }, | |
| 159 | − { | |
| 160 | − "id": "altasciences", | |
| 161 | − "name": "Altasciences", | |
| 162 | − "url": "", | |
| 163 | − "careers_url": "https://altasciences.wd1.myworkdayjobs.com/Careers", | |
| 164 | − "sectors": [ | |
| 165 | − "Pharmaceutique" | |
| 166 | − ], | |
| 167 | − "connector": "workday", | |
| 168 | − "status": "actif", | |
| 169 | − "region": "Laval" | |
| 170 | − }, | |
| 171 | − { | |
| 172 | − "id": "amilia", | |
| 173 | − "name": "Amilia", | |
| 174 | − "url": "", | |
| 175 | − "careers_url": "https://amilia.recruitee.com", | |
| 176 | − "sectors": [ | |
| 177 | − "TI" | |
| 178 | − ], | |
| 179 | − "connector": "recruitee", | |
| 180 | − "status": "actif", | |
| 181 | − "region": "Montréal" | |
| 182 | − }, | |
| 183 | − { | |
| 184 | − "id": "anciapersonnelinc", | |
| 185 | − "name": "ANCIA Personnel", | |
| 186 | − "url": "", | |
| 187 | − "careers_url": "https://anciapersonnelinc.recruitee.com", | |
| 188 | − "sectors": [ | |
| 189 | − "Placement" | |
| 190 | − ], | |
| 191 | − "connector": "recruitee", | |
| 192 | − "status": "actif", | |
| 193 | − "region": "Lévis, Québec, Montréal" | |
| 194 | − }, | |
| 195 | − { | |
| 196 | − "id": "appdirect", | |
| 197 | − "name": "AppDirect", | |
| 198 | − "url": "", | |
| 199 | − "careers_url": "https://job-boards.greenhouse.io/appdirect", | |
| 200 | − "sectors": [ | |
| 201 | − "TI", | |
| 202 | − "SaaS" | |
| 203 | − ], | |
| 204 | − "connector": "greenhouse", | |
| 205 | − "status": "actif", | |
| 206 | − "region": "Montréal" | |
| 207 | − }, | |
| 208 | − { | |
| 209 | − "id": "astucemedia", | |
| 210 | − "name": "Astucemedia", | |
| 211 | − "url": "", | |
| 212 | − "careers_url": "https://jobs.smartrecruiters.com/company/Astucemedia", | |
| 213 | − "sectors": [ | |
| 214 | − "Médias", | |
| 215 | − "TI" | |
| 216 | − ], | |
| 217 | − "connector": "smartrecruiters", | |
| 218 | − "status": "actif", | |
| 219 | − "region": "Montréal" | |
| 220 | − }, | |
| 221 | − { | |
| 222 | − "id": "atecna_montreal", | |
| 223 | − "name": "Atecna", | |
| 224 | − "url": "", | |
| 225 | − "careers_url": "https://apply.workable.com/atecna-montreal", | |
| 226 | − "sectors": [ | |
| 227 | − "TI", | |
| 228 | − "Conseil" | |
| 229 | − ], | |
| 230 | − "connector": "workable", | |
| 231 | − "status": "actif", | |
| 232 | − "region": "Montréal" | |
| 233 | − }, | |
| 234 | − { | |
| 235 | − "id": "atlas_workland", | |
| 236 | − "name": "Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)", | |
| 237 | − "url": "https://www.workland.com", | |
| 238 | − "careers_url": "https://atlas.workland.com", | |
| 239 | − "connector": "workland", | |
| 240 | − "sectors": [ | |
| 241 | − "Éducation", | |
| 242 | − "Santé", | |
| 243 | − "Secteur public", | |
| 244 | − "Multi-employeurs" | |
| 245 | − ], | |
| 246 | − "region": "Québec (province)", | |
| 247 | − "status": "actif" | |
| 248 | − }, | |
| 249 | − { | |
| 250 | − "id": "autodesk", | |
| 251 | − "name": "Autodesk", | |
| 252 | − "url": "", | |
| 253 | − "careers_url": "https://autodesk.wd1.myworkdayjobs.com/Ext", | |
| 254 | − "sectors": [ | |
| 255 | − "TI", | |
| 256 | − "Logiciel" | |
| 257 | − ], | |
| 258 | − "connector": "workday", | |
| 259 | − "status": "actif", | |
| 260 | − "region": "Montréal" | |
| 261 | − }, | |
| 262 | − { | |
| 263 | − "id": "aviyatech", | |
| 264 | − "name": "Aviya Aerospace Systems", | |
| 265 | − "url": "", | |
| 266 | − "careers_url": "https://jobs.lever.co/aviyatech", | |
| 267 | − "sectors": [ | |
| 268 | − "Aéronautique" | |
| 269 | − ], | |
| 270 | − "connector": "lever", | |
| 271 | − "status": "actif", | |
| 272 | − "region": "Longueuil" | |
| 273 | − }, | |
| 274 | − { | |
| 275 | − "id": "bardel_entertainment", | |
| 276 | − "name": "Bardel Entertainment", | |
| 277 | − "url": "", | |
| 278 | − "careers_url": "https://apply.workable.com/bardel-entertainment", | |
| 279 | − "sectors": [ | |
| 280 | − "Animation" | |
| 281 | − ], | |
| 282 | − "connector": "workable", | |
| 283 | − "status": "actif", | |
| 284 | − "region": "Montréal" | |
| 285 | − }, | |
| 286 | − { | |
| 287 | − "id": "bayshore", | |
| 288 | − "name": "Bayshore HealthCare", | |
| 289 | − "url": "https://www.bayshore.ca", | |
| 290 | − "careers_url": "https://bayshore.taleo.net/careersection/bs_ex/jobsearch.ftl?lang=fr", | |
| 291 | − "sectors": [ | |
| 292 | − "Santé", | |
| 293 | − "Soins à domicile" | |
| 294 | − ], | |
| 295 | − "connector": "taleo", | |
| 296 | − "status": "actif", | |
| 297 | − "region": "Montréal, Québec" | |
| 298 | − }, | |
| 299 | − { | |
| 300 | − "id": "bc2", | |
| 301 | − "name": "Groupe BC2", | |
| 302 | − "url": "", | |
| 303 | − "careers_url": "https://bc2.bamboohr.com/careers", | |
| 304 | − "sectors": [ | |
| 305 | − "Urbanisme", | |
| 306 | − "Conseil" | |
| 307 | − ], | |
| 308 | − "connector": "bamboohr", | |
| 309 | − "status": "actif", | |
| 310 | − "region": "Montréal" | |
| 311 | − }, | |
| 312 | − { | |
| 313 | − "id": "bdc", | |
| 314 | − "name": "BDC", | |
| 315 | − "url": "", | |
| 316 | − "careers_url": "https://bdc.wd10.myworkdayjobs.com/bdc_careers", | |
| 317 | − "sectors": [ | |
| 318 | − "Finance" | |
| 319 | − ], | |
| 320 | − "connector": "workday", | |
| 321 | − "status": "actif", | |
| 322 | − "region": "Montréal" | |
| 323 | − }, | |
| 324 | − { | |
| 325 | − "id": "bell_textron", | |
| 326 | − "name": "Bell Textron Canada", | |
| 327 | − "url": "https://www.bellflight.com", | |
| 328 | − "careers_url": "https://textron.taleo.net/careersection/bell/jobsearch.ftl?lang=fr", | |
| 329 | − "sectors": [ | |
| 330 | − "Aéronautique", | |
| 331 | − "Fabrication" | |
| 332 | − ], | |
| 333 | − "connector": "taleo", | |
| 334 | − "status": "actif", | |
| 335 | − "region": "Mirabel" | |
| 336 | − }, | |
| 337 | − { | |
| 338 | − "id": "beneva", | |
| 339 | − "name": "Beneva", | |
| 340 | − "url": "https://beneva.ca", | |
| 341 | − "careers_url": "https://beneva.wd10.myworkdayjobs.com/BenevaSite_carriere", | |
| 342 | − "sectors": [], | |
| 343 | − "connector": "workday", | |
| 344 | − "status": "actif", | |
| 345 | − "region": "Québec" | |
| 346 | − }, | |
| 347 | − { | |
| 348 | − "id": "bento_sushi", | |
| 349 | − "name": "Bento Sushi", | |
| 350 | − "url": "https://www.bentosushi.com", | |
| 351 | − "careers_url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=d0dfb14c-f365-4599-b39b-0fdccb3d1160&ccId=19000101_000001&lang=fr_CA", | |
| 352 | − "connector": "adp", | |
| 353 | − "sectors": [ | |
| 354 | − "Restauration" | |
| 355 | − ], | |
| 356 | − "region": "Québec (province)", | |
| 357 | − "status": "actif" | |
| 358 | − }, | |
| 359 | − { | |
| 360 | − "id": "bhvr", | |
| 361 | − "name": "Behaviour Interactif", | |
| 362 | − "url": "", | |
| 363 | − "careers_url": "https://jobs.lever.co/bhvr", | |
| 364 | − "sectors": [ | |
| 365 | − "Jeux vidéo" | |
| 366 | − ], | |
| 367 | − "connector": "lever", | |
| 368 | − "status": "actif", | |
| 369 | − "region": "Montréal" | |
| 370 | − }, | |
| 371 | − { | |
| 372 | − "id": "bigbang", | |
| 373 | − "name": "Big Bang", | |
| 374 | − "url": "", | |
| 375 | − "careers_url": "https://bigbang.bamboohr.com/careers", | |
| 376 | − "sectors": [ | |
| 377 | − "TI" | |
| 378 | − ], | |
| 379 | − "connector": "bamboohr", | |
| 380 | − "status": "actif", | |
| 381 | − "region": "Montréal" | |
| 382 | − }, | |
| 383 | − { | |
| 384 | − "id": "biximontreal", | |
| 385 | − "name": "BIXI Montréal", | |
| 386 | − "url": "", | |
| 387 | − "careers_url": "https://biximontreal.recruitee.com", | |
| 388 | − "sectors": [ | |
| 389 | − "Transport" | |
| 390 | − ], | |
| 391 | − "connector": "recruitee", | |
| 392 | − "status": "actif", | |
| 393 | − "region": "Montréal" | |
| 394 | − }, | |
| 395 | − { | |
| 396 | − "id": "bmo", | |
| 397 | − "name": "BMO Groupe financier", | |
| 398 | − "url": "", | |
| 399 | − "careers_url": "https://bmo.wd3.myworkdayjobs.com/External", | |
| 400 | − "sectors": [ | |
| 401 | − "Finance" | |
| 402 | − ], | |
| 403 | − "connector": "workday", | |
| 404 | − "status": "actif", | |
| 405 | − "region": "Montréal, Laval, Gatineau" | |
| 406 | − }, | |
| 407 | − { | |
| 408 | − "id": "bombardier", | |
| 409 | − "name": "Bombardier", | |
| 410 | − "url": "https://bombardier.com", | |
| 411 | − "careers_url": "https://jobs.bombardier.com", | |
| 412 | − "sectors": [ | |
| 413 | − "Aéronautique", | |
| 414 | − "Ingénierie", | |
| 415 | − "Fabrication" | |
| 416 | − ], | |
| 417 | − "connector": "successfactors", | |
| 418 | − "status": "actif", | |
| 419 | − "region": "Dorval, Mirabel, Montréal" | |
| 420 | − }, | |
| 421 | − { | |
| 422 | − "id": "botpress", | |
| 423 | − "name": "Botpress", | |
| 424 | − "url": "", | |
| 425 | − "careers_url": "https://apply.workable.com/botpress", | |
| 426 | − "sectors": [ | |
| 427 | − "TI", | |
| 428 | − "IA" | |
| 429 | − ], | |
| 430 | − "connector": "workable", | |
| 431 | − "status": "actif", | |
| 432 | − "region": "Montréal, Québec" | |
| 433 | − }, | |
| 434 | − { | |
| 435 | − "id": "brandmomentum", | |
| 436 | − "name": "Brand Momentum", | |
| 437 | − "url": "", | |
| 438 | − "careers_url": "https://brandmomentum.breezy.hr", | |
| 439 | − "sectors": [ | |
| 440 | − "Marketing", | |
| 441 | − "Ventes" | |
| 442 | − ], | |
| 443 | − "connector": "breezy", | |
| 444 | − "status": "actif", | |
| 445 | − "region": "Montréal, Laval, Québec" | |
| 446 | − }, | |
| 447 | − { | |
| 448 | − "id": "broadsign", | |
| 449 | − "name": "Broadsign", | |
| 450 | − "url": "", | |
| 451 | − "careers_url": "https://job-boards.greenhouse.io/broadsign", | |
| 452 | − "sectors": [ | |
| 453 | − "TI", | |
| 454 | − "Affichage" | |
| 455 | − ], | |
| 456 | − "connector": "greenhouse", | |
| 457 | − "status": "actif", | |
| 458 | − "region": "Montréal" | |
| 459 | − }, | |
| 460 | − { | |
| 461 | − "id": "broccolini", | |
| 462 | − "name": "Broccolini", | |
| 463 | − "url": "", | |
| 464 | − "careers_url": "https://broccolini.bamboohr.com/careers", | |
| 465 | − "sectors": [ | |
| 466 | − "Construction", | |
| 467 | − "Immobilier" | |
| 468 | − ], | |
| 469 | − "connector": "bamboohr", | |
| 470 | − "status": "actif", | |
| 471 | − "region": "Montréal" | |
| 472 | − }, | |
| 473 | − { | |
| 474 | − "id": "caaquebec", | |
| 475 | − "name": "CAA-Québec", | |
| 476 | − "url": "https://caaquebec.com", | |
| 477 | − "careers_url": "https://caaquebec.wd3.myworkdayjobs.com/CarrieresCAA-Quebec", | |
| 478 | − "sectors": [], | |
| 479 | − "connector": "workday", | |
| 480 | − "status": "actif", | |
| 481 | − "region": "Québec" | |
| 482 | − }, | |
| 483 | − { | |
| 484 | − "id": "cae", | |
| 485 | − "name": "CAE", | |
| 486 | − "url": "https://www.cae.com", | |
| 487 | − "careers_url": "https://cae.wd3.myworkdayjobs.com/career", | |
| 488 | − "sectors": [ | |
| 489 | − "Aéronautique", | |
| 490 | − "Simulation", | |
| 491 | − "TI" | |
| 492 | − ], | |
| 493 | − "connector": "workday", | |
| 494 | − "status": "actif", | |
| 495 | − "region": "Montréal" | |
| 496 | − }, | |
| 497 | − { | |
| 498 | − "id": "canada_global", | |
| 499 | − "name": "Canada Global Recruitment", | |
| 500 | − "url": "", | |
| 501 | − "careers_url": "https://canada-global.breezy.hr", | |
| 502 | − "sectors": [ | |
| 503 | − "Placement" | |
| 504 | − ], | |
| 505 | − "connector": "breezy", | |
| 506 | − "status": "actif", | |
| 507 | − "region": "Montréal" | |
| 508 | − }, | |
| 509 | − { | |
| 510 | − "id": "canadiantirecorporation", | |
| 511 | − "name": "Canadian Tire", | |
| 512 | − "url": "https://canadiantire.ca", | |
| 513 | − "careers_url": "https://canadiantirecorporation.wd3.myworkdayjobs.com/Enterprise_External_Careers_Site", | |
| 514 | − "sectors": [], | |
| 515 | − "connector": "workday", | |
| 516 | − "status": "actif", | |
| 517 | − "region": "Montréal" | |
| 518 | − }, | |
| 519 | − { | |
| 520 | − "id": "capreit", | |
| 521 | − "name": "CAPREIT", | |
| 522 | − "url": "https://www.capreit.ca", | |
| 523 | − "careers_url": "https://careers-capreit.icims.com/jobs/search?ss=1", | |
| 524 | − "sectors": [ | |
| 525 | − "Immobilier", | |
| 526 | − "Gestion immobilière" | |
| 527 | − ], | |
| 528 | − "connector": "icims", | |
| 529 | − "status": "actif", | |
| 530 | − "region": "Montréal" | |
| 531 | − }, | |
| 532 | − { | |
| 533 | − "id": "cascades", | |
| 534 | − "name": "Cascades", | |
| 535 | − "url": "https://www.cascades.com", | |
| 536 | − "careers_url": "https://jobs.cascades.com", | |
| 537 | − "sectors": [ | |
| 538 | − "Pâtes et papiers", | |
| 539 | − "Emballage", | |
| 540 | − "Fabrication" | |
| 541 | − ], | |
| 542 | − "connector": "successfactors", | |
| 543 | − "status": "actif", | |
| 544 | − "region": "Kingsey Falls, Drummondville, Candiac" | |
| 545 | − }, | |
| 546 | − { | |
| 547 | − "id": "cdpq", | |
| 548 | − "name": "CDPQ — Caisse de dépôt et placement du Québec", | |
| 549 | − "url": "https://cdpq.com", | |
| 550 | − "careers_url": "https://cdpq.wd10.myworkdayjobs.com/CDPQ", | |
| 551 | − "sectors": [], | |
| 552 | − "connector": "workday", | |
| 553 | − "status": "actif", | |
| 554 | − "region": "Montréal" | |
| 555 | − }, | |
| 556 | − { | |
| 557 | − "id": "cfmontreal", | |
| 558 | − "name": "CF Montréal", | |
| 559 | − "url": "", | |
| 560 | − "careers_url": "https://jobs.smartrecruiters.com/company/CFMontreal", | |
| 561 | − "sectors": [ | |
| 562 | − "Sport" | |
| 563 | − ], | |
| 564 | − "connector": "smartrecruiters", | |
| 565 | − "status": "actif", | |
| 566 | − "region": "Montréal" | |
| 567 | − }, | |
| 568 | − { | |
| 569 | − "id": "cgi", | |
| 570 | − "name": "CGI", | |
| 571 | − "url": "https://www.cgi.com", | |
| 572 | − "careers_url": "https://cgi.njoyn.com/CORP/xweb/xweb.asp?clid=21001&page=joblisting&lang=2", | |
| 573 | − "connector": "njoyn", | |
| 574 | − "sectors": [ | |
| 575 | − "TI", | |
| 576 | − "Services-conseils" | |
| 577 | − ], | |
| 578 | − "region": "Montréal, Québec", | |
| 579 | − "status": "actif" | |
| 580 | − }, | |
| 581 | − { | |
| 582 | − "id": "charger_logistics_inc", | |
| 583 | − "name": "Charger Logistics", | |
| 584 | − "url": "", | |
| 585 | − "careers_url": "https://apply.workable.com/charger-logistics-inc", | |
| 586 | − "sectors": [ | |
| 587 | − "Transport", | |
| 588 | − "Logistique" | |
| 589 | − ], | |
| 590 | − "connector": "workable", | |
| 591 | − "status": "actif", | |
| 592 | − "region": "Dorval" | |
| 593 | − }, | |
| 594 | − { | |
| 595 | − "id": "chu_quebec", | |
| 596 | − "name": "CHU de Québec — Université Laval", | |
| 597 | − "url": "https://www.chudequebec.ca", | |
| 598 | − "careers_url": "https://chudequebec.carrieresante.gouv.qc.ca", | |
| 599 | − "connector": "wpjobmanager", | |
| 600 | − "sectors": [ | |
| 601 | − "Santé", | |
| 602 | − "Secteur public" | |
| 603 | − ], | |
| 604 | − "region": "Québec", | |
| 605 | − "status": "actif" | |
| 606 | − }, | |
| 607 | − { | |
| 608 | − "id": "chum", | |
| 609 | − "name": "CHUM", | |
| 610 | − "url": "https://www.chumontreal.qc.ca", | |
| 611 | − "careers_url": "https://chum.carrieresante.gouv.qc.ca", | |
| 612 | − "connector": "wpjobmanager", | |
| 613 | − "sectors": [ | |
| 614 | − "Santé", | |
| 615 | − "Secteur public" | |
| 616 | − ], | |
| 617 | − "region": "Montréal", | |
| 618 | − "status": "actif" | |
| 619 | − }, | |
| 620 | − { | |
| 621 | − "id": "churchdwight", | |
| 622 | − "name": "Church & Dwight Canada", | |
| 623 | − "url": "https://churchdwight.ca", | |
| 624 | − "careers_url": "https://churchdwight.wd1.myworkdayjobs.com/chdcanadacareers", | |
| 625 | − "sectors": [ | |
| 626 | − "Production" | |
| 627 | − ], | |
| 628 | − "connector": "workday", | |
| 629 | − "status": "actif", | |
| 630 | − "region": "" | |
| 631 | − }, | |
| 632 | − { | |
| 633 | − "id": "cibc", | |
| 634 | − "name": "Banque CIBC", | |
| 635 | − "url": "", | |
| 636 | − "careers_url": "https://cibc.wd3.myworkdayjobs.com/search", | |
| 637 | − "sectors": [ | |
| 638 | − "Finance" | |
| 639 | − ], | |
| 640 | − "connector": "workday", | |
| 641 | − "status": "actif", | |
| 642 | − "region": "Montréal, Québec" | |
| 643 | − }, | |
| 644 | − { | |
| 645 | − "id": "cima2", | |
| 646 | − "name": "CIMA+", | |
| 647 | − "url": "", | |
| 648 | − "careers_url": "https://jobs.smartrecruiters.com/company/CIMA2", | |
| 649 | − "sectors": [ | |
| 650 | − "Ingénierie" | |
| 651 | − ], | |
| 652 | − "connector": "smartrecruiters", | |
| 653 | − "status": "actif", | |
| 654 | − "region": "Montréal, Québec, Laval" | |
| 655 | − }, | |
| 656 | − { | |
| 657 | − "id": "circlek", | |
| 658 | − "name": "Couche-Tard / Circle K", | |
| 659 | − "url": "", | |
| 660 | − "careers_url": "https://circlek.wd3.myworkdayjobs.com/CircleKStoreJobs", | |
| 661 | − "sectors": [ | |
| 662 | − "Commerce de détail" | |
| 663 | − ], | |
| 664 | − "connector": "workday", | |
| 665 | − "status": "actif", | |
| 666 | − "region": "Québec, Montréal, Drummondville" | |
| 667 | − }, | |
| 668 | − { | |
| 669 | − "id": "cirquedusoleil", | |
| 670 | − "name": "Cirque du Soleil", | |
| 671 | − "url": "https://www.cirquedusoleil.com", | |
| 672 | − "careers_url": "https://jobs.lever.co/cirquedusoleil", | |
| 673 | − "sectors": [ | |
| 674 | − "Divertissement", | |
| 675 | − "Création" | |
| 676 | − ], | |
| 677 | − "connector": "lever", | |
| 678 | − "status": "actif", | |
| 679 | − "region": "Montréal" | |
| 680 | − }, | |
| 681 | − { | |
| 682 | − "id": "cisss_abitibi", | |
| 683 | − "name": "CISSS de l'Abitibi-Témiscamingue", | |
| 684 | − "url": "https://www.cisss-at.gouv.qc.ca", | |
| 685 | − "careers_url": "https://cisssat.carrieresante.gouv.qc.ca", | |
| 686 | − "connector": "wpjobmanager", | |
| 687 | − "sectors": [ | |
| 688 | − "Santé", | |
| 689 | − "Secteur public" | |
| 690 | − ], | |
| 691 | − "region": "Abitibi-Témiscamingue", | |
| 692 | − "status": "actif" | |
| 693 | − }, | |
| 694 | − { | |
| 695 | − "id": "cisss_chaudiere_appalaches", | |
| 696 | − "name": "CISSS de Chaudière-Appalaches", | |
| 697 | − "url": "https://www.cisssca.com", | |
| 698 | − "careers_url": "https://cisssca.carrieresante.gouv.qc.ca", | |
| 699 | − "connector": "wpjobmanager", | |
| 700 | − "sectors": [ | |
| 701 | − "Santé", | |
| 702 | − "Secteur public" | |
| 703 | − ], | |
| 704 | − "region": "Chaudière-Appalaches", | |
| 705 | − "status": "actif" | |
| 706 | − }, | |
| 707 | − { | |
| 708 | − "id": "cisss_lanaudiere", | |
| 709 | − "name": "CISSS de Lanaudière", | |
| 710 | − "url": "https://www.cisss-lanaudiere.gouv.qc.ca", | |
| 711 | − "careers_url": "https://lanaudiere.carrieresante.gouv.qc.ca", | |
| 712 | − "connector": "wpjobmanager", | |
| 713 | − "sectors": [ | |
| 714 | − "Santé", | |
| 715 | − "Secteur public" | |
| 716 | − ], | |
| 717 | − "region": "Lanaudière", | |
| 718 | − "status": "actif" | |
| 719 | − }, | |
| 720 | − { | |
| 721 | − "id": "cisss_laurentides", | |
| 722 | − "name": "CISSS des Laurentides", | |
| 723 | − "url": "https://www.santelaurentides.gouv.qc.ca", | |
| 724 | − "careers_url": "https://laurentides.carrieresante.gouv.qc.ca", | |
| 725 | − "connector": "wpjobmanager", | |
| 726 | − "sectors": [ | |
| 727 | − "Santé", | |
| 728 | − "Secteur public" | |
| 729 | − ], | |
| 730 | − "region": "Laurentides", | |
| 731 | − "status": "actif" | |
| 732 | − }, | |
| 733 | − { | |
| 734 | − "id": "cisss_laval", | |
| 735 | − "name": "CISSS de Laval", | |
| 736 | − "url": "https://www.lavalensante.com", | |
| 737 | − "careers_url": "https://cissslaval.carrieresante.gouv.qc.ca", | |
| 738 | − "connector": "wpjobmanager", | |
| 739 | − "sectors": [ | |
| 740 | − "Santé", | |
| 741 | − "Secteur public" | |
| 742 | − ], | |
| 743 | − "region": "Laval", | |
| 744 | − "status": "actif" | |
| 745 | − }, | |
| 746 | − { | |
| 747 | − "id": "cisss_outaouais", | |
| 748 | − "name": "CISSS de l'Outaouais", | |
| 749 | − "url": "https://cisss-outaouais.gouv.qc.ca", | |
| 750 | − "careers_url": "https://viensvivretespassions.ca", | |
| 751 | − "connector": "wpjobmanager", | |
| 752 | − "sectors": [ | |
| 753 | − "Santé", | |
| 754 | − "Secteur public" | |
| 755 | − ], | |
| 756 | − "region": "Outaouais", | |
| 757 | − "status": "actif" | |
| 758 | − }, | |
| 759 | − { | |
| 760 | − "id": "ciusss_est_montreal", | |
| 761 | − "name": "CIUSSS de l'Est-de-l'Île-de-Montréal", | |
| 762 | − "url": "https://ciusss-estmtl.gouv.qc.ca", | |
| 763 | − "careers_url": "https://ciusssemtl.taleo.net/careersection/cemtl/jobsearch.ftl?lang=fr", | |
| 764 | − "sectors": [ | |
| 765 | − "Santé", | |
| 766 | − "Services sociaux", | |
| 767 | − "Secteur public" | |
| 768 | − ], | |
| 769 | − "connector": "taleo", | |
| 770 | − "status": "actif", | |
| 771 | − "region": "Montréal" | |
| 772 | − }, | |
| 773 | − { | |
| 774 | − "id": "cogeco", | |
| 775 | − "name": "Cogeco", | |
| 776 | − "url": "", | |
| 777 | − "careers_url": "https://cogeco.wd3.myworkdayjobs.com/Cogeco_Careers", | |
| 778 | − "sectors": [ | |
| 779 | − "Télécoms" | |
| 780 | − ], | |
| 781 | − "connector": "workday", | |
| 782 | − "status": "actif", | |
| 783 | − "region": "Montréal, Trois-Rivières" | |
| 784 | − }, | |
| 785 | − { | |
| 786 | − "id": "cohere", | |
| 787 | − "name": "Cohere", | |
| 788 | − "url": "", | |
| 789 | − "careers_url": "https://jobs.ashbyhq.com/cohere", | |
| 790 | − "sectors": [ | |
| 791 | − "TI", | |
| 792 | − "IA" | |
| 793 | − ], | |
| 794 | − "connector": "ashby", | |
| 795 | − "status": "actif", | |
| 796 | − "region": "Montréal" | |
| 797 | − }, | |
| 798 | − { | |
| 799 | − "id": "cordonbleu", | |
| 800 | − "name": "Aliments Ouimet-Cordon Bleu inc.", | |
| 801 | − "url": "https://clarkcordonbleu.ca", | |
| 802 | − "careers_url": "https://cordonbleu.bamboohr.com/careers", | |
| 803 | − "sectors": [ | |
| 804 | − "Production" | |
| 805 | − ], | |
| 806 | − "connector": "bamboohr", | |
| 807 | − "status": "actif", | |
| 808 | − "region": "" | |
| 809 | − }, | |
| 810 | − { | |
| 811 | − "id": "cssdd", | |
| 812 | − "name": "CSS des Découvreurs", | |
| 813 | − "url": "https://www.cssdd.gouv.qc.ca", | |
| 814 | − "careers_url": "https://emplois.cssdd.gouv.qc.ca", | |
| 815 | − "connector": "digitalrecruiters", | |
| 816 | − "sectors": [ | |
| 817 | − "Éducation", | |
| 818 | − "Secteur public" | |
| 819 | − ], | |
| 820 | − "region": "Québec", | |
| 821 | − "status": "actif" | |
| 822 | − }, | |
| 823 | − { | |
| 824 | − "id": "cultures_genv", | |
| 825 | − "name": "Cultures Gen V", | |
| 826 | − "url": "https://gen-v.com", | |
| 827 | − "careers_url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=8b346731-d189-4cf2-a14c-9e48d38befde&ccId=36427051_2&lang=fr_CA", | |
| 828 | − "connector": "adp", | |
| 829 | − "sectors": [ | |
| 830 | − "Agroalimentaire", | |
| 831 | − "Serriculture" | |
| 832 | − ], | |
| 833 | − "region": "Montérégie", | |
| 834 | − "status": "actif" | |
| 835 | − }, | |
| 836 | − { | |
| 837 | − "id": "dcbel", | |
| 838 | − "name": "dcbel", | |
| 839 | − "url": "", | |
| 840 | − "careers_url": "https://dcbel.bamboohr.com/careers", | |
| 841 | − "sectors": [ | |
| 842 | − "Énergie", | |
| 843 | − "TI" | |
| 844 | − ], | |
| 845 | − "connector": "bamboohr", | |
| 846 | − "status": "actif", | |
| 847 | − "region": "Montréal" | |
| 848 | − }, | |
| 849 | − { | |
| 850 | − "id": "deloitte", | |
| 851 | − "name": "Deloitte Canada", | |
| 852 | − "url": "https://www.deloitte.com/ca", | |
| 853 | − "careers_url": "https://careers.deloitte.ca", | |
| 854 | − "connector": "successfactors", | |
| 855 | − "sectors": [ | |
| 856 | − "Services-conseils", | |
| 857 | − "Comptabilité", | |
| 858 | − "TI" | |
| 859 | − ], | |
| 860 | − "region": "Montréal, Québec", | |
| 861 | − "status": "actif" | |
| 862 | − }, | |
| 863 | − { | |
| 864 | − "id": "depot-direct", | |
| 865 | − "name": "Dépôt direct employeurs", | |
| 866 | − "url": "https://www.job-ka.com/employeurs", | |
| 867 | − "careers_url": "https://www.job-ka.com/employeurs", | |
| 868 | − "sectors": [ | |
| 869 | − "Tous secteurs" | |
| 870 | − ], | |
| 871 | − "connector": "depot-direct", | |
| 872 | − "status": "modération", | |
| 873 | − "region": "Québec (province)" | |
| 874 | − }, | |
| 875 | − { | |
| 876 | − "id": "desjardins", | |
| 877 | − "name": "Mouvement Desjardins", | |
| 878 | − "url": "https://www.desjardins.com", | |
| 879 | − "careers_url": "https://desjardins.wd10.myworkdayjobs.com/Desjardins", | |
| 880 | − "sectors": [ | |
| 881 | − "Finance", | |
| 882 | − "Assurance", | |
| 883 | − "TI" | |
| 884 | − ], | |
| 885 | − "connector": "workday", | |
| 886 | − "status": "actif", | |
| 887 | − "region": "Lévis / province" | |
| 888 | − }, | |
| 889 | − { | |
| 890 | − "id": "devimco", | |
| 891 | − "name": "Devimco Appartements", | |
| 892 | − "url": "https://devimco.com", | |
| 893 | − "careers_url": "https://devimco.bamboohr.com/careers", | |
| 894 | − "sectors": [ | |
| 895 | − "Immobilier" | |
| 896 | − ], | |
| 897 | − "connector": "bamboohr", | |
| 898 | − "status": "actif", | |
| 899 | − "region": "" | |
| 900 | − }, | |
| 901 | − { | |
| 902 | − "id": "dilitrust", | |
| 903 | − "name": "DiliTrust", | |
| 904 | − "url": "", | |
| 905 | − "careers_url": "https://jobs.lever.co/dilitrust", | |
| 906 | − "sectors": [ | |
| 907 | − "TI", | |
| 908 | − "Juridique" | |
| 909 | − ], | |
| 910 | − "connector": "lever", | |
| 911 | − "status": "actif", | |
| 912 | − "region": "Montréal" | |
| 913 | − }, | |
| 914 | − { | |
| 915 | − "id": "distro", | |
| 916 | − "name": "Distro", | |
| 917 | − "url": "", | |
| 918 | − "careers_url": "https://jobs.lever.co/distro", | |
| 919 | − "sectors": [ | |
| 920 | − "Ventes", | |
| 921 | − "TI" | |
| 922 | − ], | |
| 923 | − "connector": "lever", | |
| 924 | − "status": "actif", | |
| 925 | − "region": "Montréal, Westmount" | |
| 926 | − }, | |
| 927 | − { | |
| 928 | − "id": "domtar", | |
| 929 | − "name": "Domtar", | |
| 930 | − "url": "https://www.domtar.com", | |
| 931 | − "careers_url": "https://jobs.domtar.com", | |
| 932 | − "sectors": [ | |
| 933 | − "Pâtes et papiers", | |
| 934 | − "Foresterie", | |
| 935 | − "Fabrication" | |
| 936 | − ], | |
| 937 | − "connector": "successfactors", | |
| 938 | − "status": "actif", | |
| 939 | − "region": "Montréal, Windsor, Lachine" | |
| 940 | − }, | |
| 941 | − { | |
| 942 | − "id": "dulcedo", | |
| 943 | − "name": "Dulcedo Management", | |
| 944 | − "url": "", | |
| 945 | − "careers_url": "https://jobs.lever.co/dulcedo", | |
| 946 | − "sectors": [ | |
| 947 | − "Mode", | |
| 948 | − "Gestion d'artistes" | |
| 949 | − ], | |
| 950 | − "connector": "lever", | |
| 951 | − "status": "actif", | |
| 952 | − "region": "Montréal" | |
| 953 | − }, | |
| 954 | − { | |
| 955 | − "id": "edf_renouvelables", | |
| 956 | − "name": "EDF Renouvelables Canada", | |
| 957 | − "url": "https://www.edf-renouvelables.ca", | |
| 958 | − "careers_url": "https://cafrench-edf-re.icims.com/jobs/search?ss=1", | |
| 959 | − "sectors": [ | |
| 960 | − "Énergie", | |
| 961 | − "Ingénierie" | |
| 962 | − ], | |
| 963 | − "connector": "icims", | |
| 964 | − "status": "actif", | |
| 965 | − "region": "Montréal" | |
| 966 | − }, | |
| 967 | − { | |
| 968 | − "id": "emcocorporation", | |
| 969 | − "name": "EMCO", | |
| 970 | − "url": "", | |
| 971 | − "careers_url": "https://jobs.smartrecruiters.com/company/EMCOCorporation", | |
| 972 | − "sectors": [ | |
| 973 | − "Distribution", | |
| 974 | − "Construction" | |
| 975 | − ], | |
| 976 | − "connector": "smartrecruiters", | |
| 977 | − "status": "actif", | |
| 978 | − "region": "Montréal, Québec, Laval" | |
| 979 | − }, | |
| 980 | − { | |
| 981 | − "id": "eminent_valet", | |
| 982 | − "name": "Eminent Valet", | |
| 983 | − "url": "", | |
| 984 | − "careers_url": "https://apply.workable.com/eminent-valet", | |
| 985 | − "sectors": [ | |
| 986 | − "Services" | |
| 987 | − ], | |
| 988 | − "connector": "workable", | |
| 989 | − "status": "actif", | |
| 990 | − "region": "Montréal" | |
| 991 | − }, | |
| 992 | − { | |
| 993 | − "id": "eosaircraftinc", | |
| 994 | − "name": "EOS Aircraft", | |
| 995 | − "url": "", | |
| 996 | − "careers_url": "https://eosaircraftinc.bamboohr.com/careers", | |
| 997 | − "sectors": [ | |
| 998 | − "Aéronautique" | |
| 999 | − ], | |
| 1000 | − "connector": "bamboohr", | |
| 1001 | − "status": "actif", | |
| 1002 | − "region": "Montréal" | |
| 1003 | − }, | |
| 1004 | − { | |
| 1005 | − "id": "eq3_ltd", | |
| 1006 | − "name": "EQ3", | |
| 1007 | − "url": "", | |
| 1008 | − "careers_url": "https://eq3-ltd.breezy.hr", | |
| 1009 | − "sectors": [ | |
| 1010 | − "Commerce de détail", | |
| 1011 | − "Meuble" | |
| 1012 | − ], | |
| 1013 | − "connector": "breezy", | |
| 1014 | − "status": "actif", | |
| 1015 | − "region": "Brossard, Laval, Montréal" | |
| 1016 | − }, | |
| 1017 | − { | |
| 1018 | − "id": "eqbank", | |
| 1019 | − "name": "EQ Bank", | |
| 1020 | − "url": "", | |
| 1021 | − "careers_url": "https://jobs.lever.co/eqbank", | |
| 1022 | − "sectors": [ | |
| 1023 | − "Finance" | |
| 1024 | − ], | |
| 1025 | − "connector": "lever", | |
| 1026 | − "status": "actif", | |
| 1027 | − "region": "Montréal" | |
| 1028 | − }, | |
| 1029 | − { | |
| 1030 | − "id": "espresso_jobs", | |
| 1031 | − "name": "Espresso-Jobs", | |
| 1032 | − "url": "https://www.espresso-jobs.com", | |
| 1033 | − "careers_url": "https://www.espresso-jobs.com/emploi", | |
| 1034 | − "sectors": [ | |
| 1035 | − "Portail", | |
| 1036 | − "TI", | |
| 1037 | − "Créatif" | |
| 1038 | − ], | |
| 1039 | − "connector": "portail", | |
| 1040 | − "status": "actif", | |
| 1041 | − "region": "Québec (province)", | |
| 1042 | − "aggregator": true | |
| 1043 | − }, | |
| 1044 | − { | |
| 1045 | − "id": "evlo", | |
| 1046 | − "name": "EVLO (Hydro-Québec)", | |
| 1047 | − "url": "", | |
| 1048 | − "careers_url": "https://evlo.bamboohr.com/careers", | |
| 1049 | − "sectors": [ | |
| 1050 | − "Énergie" | |
| 1051 | − ], | |
| 1052 | − "connector": "bamboohr", | |
| 1053 | − "status": "actif", | |
| 1054 | − "region": "Varennes" | |
| 1055 | − }, | |
| 1056 | − { | |
| 1057 | − "id": "evolving_web", | |
| 1058 | − "name": "Evolving Web", | |
| 1059 | − "url": "", | |
| 1060 | − "careers_url": "https://apply.workable.com/evolving-web", | |
| 1061 | − "sectors": [ | |
| 1062 | − "TI", | |
| 1063 | − "Web" | |
| 1064 | − ], | |
| 1065 | − "connector": "workable", | |
| 1066 | − "status": "actif", | |
| 1067 | − "region": "Montréal" | |
| 1068 | − }, | |
| 1069 | − { | |
| 1070 | − "id": "exfo", | |
| 1071 | − "name": "EXFO", | |
| 1072 | − "url": "", | |
| 1073 | − "careers_url": "https://exfo.wd10.myworkdayjobs.com/exfo_careers", | |
| 1074 | − "sectors": [ | |
| 1075 | − "TI", | |
| 1076 | − "Télécommunications" | |
| 1077 | − ], | |
| 1078 | − "connector": "workday", | |
| 1079 | − "status": "actif", | |
| 1080 | − "region": "Québec" | |
| 1081 | − }, | |
| 1082 | − { | |
| 1083 | − "id": "exo", | |
| 1084 | − "name": "exo (transport métropolitain)", | |
| 1085 | − "url": "https://exo.quebec", | |
| 1086 | − "careers_url": "https://phh.tbe.taleo.net/phh04/ats/careers/v2/jobSearch?org=AMT&cws=39", | |
| 1087 | − "connector": "taleo_tbe", | |
| 1088 | − "sectors": [ | |
| 1089 | − "Transport", | |
| 1090 | − "Secteur public" | |
| 1091 | − ], | |
| 1092 | − "region": "Montréal", | |
| 1093 | − "status": "actif" | |
| 1094 | − }, | |
| 1095 | − { | |
| 1096 | − "id": "explorance", | |
| 1097 | − "name": "Explorance", | |
| 1098 | − "url": "", | |
| 1099 | − "careers_url": "https://explorance.bamboohr.com/careers", | |
| 1100 | − "sectors": [ | |
| 1101 | − "TI", | |
| 1102 | − "SaaS" | |
| 1103 | − ], | |
| 1104 | − "connector": "bamboohr", | |
| 1105 | − "status": "actif", | |
| 1106 | − "region": "Montréal" | |
| 1107 | − }, | |
| 1108 | − { | |
| 1109 | − "id": "fenetresconcept", | |
| 1110 | − "name": "Fenêtres Concept", | |
| 1111 | − "url": "https://fenetresconcept.com", | |
| 1112 | − "careers_url": "https://fenetresconcept.bamboohr.com/careers", | |
| 1113 | − "sectors": [ | |
| 1114 | − "Production" | |
| 1115 | − ], | |
| 1116 | − "connector": "bamboohr", | |
| 1117 | − "status": "actif", | |
| 1118 | − "region": "" | |
| 1119 | − }, | |
| 1120 | − { | |
| 1121 | − "id": "flare", | |
| 1122 | − "name": "Flare (cybersécurité)", | |
| 1123 | − "url": "", | |
| 1124 | − "careers_url": "https://flare.bamboohr.com/careers", | |
| 1125 | − "sectors": [ | |
| 1126 | − "TI" | |
| 1127 | − ], | |
| 1128 | − "connector": "bamboohr", | |
| 1129 | − "status": "actif", | |
| 1130 | − "region": "Montréal" | |
| 1131 | − }, | |
| 1132 | − { | |
| 1133 | − "id": "flinks", | |
| 1134 | − "name": "Flinks", | |
| 1135 | − "url": "", | |
| 1136 | − "careers_url": "https://apply.workable.com/flinks", | |
| 1137 | − "sectors": [ | |
| 1138 | − "TI", | |
| 1139 | − "Fintech" | |
| 1140 | − ], | |
| 1141 | − "connector": "workable", | |
| 1142 | − "status": "actif", | |
| 1143 | − "region": "Montréal" | |
| 1144 | − }, | |
| 1145 | − { | |
| 1146 | − "id": "fondsftq", | |
| 1147 | − "name": "Fonds de solidarité FTQ", | |
| 1148 | − "url": "https://fondsftq.com", | |
| 1149 | − "careers_url": "https://fondsftq.wd10.myworkdayjobs.com/sitecarriere_externe", | |
| 1150 | − "sectors": [], | |
| 1151 | − "connector": "workday", | |
| 1152 | − "status": "actif", | |
| 1153 | − "region": "Montréal" | |
| 1154 | − }, | |
| 1155 | − { | |
| 1156 | − "id": "framestore", | |
| 1157 | − "name": "Framestore", | |
| 1158 | − "url": "", | |
| 1159 | − "careers_url": "https://framestore.recruitee.com", | |
| 1160 | − "sectors": [ | |
| 1161 | − "Effets visuels", | |
| 1162 | − "Création" | |
| 1163 | − ], | |
| 1164 | − "connector": "recruitee", | |
| 1165 | − "status": "actif", | |
| 1166 | − "region": "Montréal" | |
| 1167 | − }, | |
| 1168 | − { | |
| 1169 | − "id": "fruitdor", | |
| 1170 | − "name": "Fruit d'Or", | |
| 1171 | − "url": "https://fruitdor.ca", | |
| 1172 | − "careers_url": "https://recruiting.ultipro.ca/FRU5100FRUIT/JobBoard/91103632-8052-480e-a5b0-a6028d640577/", | |
| 1173 | − "connector": "ultipro", | |
| 1174 | − "sectors": [ | |
| 1175 | − "Agroalimentaire", | |
| 1176 | − "Manufacturier" | |
| 1177 | − ], | |
| 1178 | − "region": "Centre-du-Québec", | |
| 1179 | − "status": "actif" | |
| 1180 | − }, | |
| 1181 | − { | |
| 1182 | − "id": "fuse", | |
| 1183 | − "name": "Fuse Energy", | |
| 1184 | − "url": "", | |
| 1185 | − "careers_url": "https://jobs.ashbyhq.com/Fuse", | |
| 1186 | − "sectors": [ | |
| 1187 | − "Énergie", | |
| 1188 | − "TI" | |
| 1189 | − ], | |
| 1190 | − "connector": "ashby", | |
| 1191 | − "status": "actif", | |
| 1192 | − "region": "Montréal" | |
| 1193 | − }, | |
| 1194 | − { | |
| 1195 | − "id": "gameloft", | |
| 1196 | − "name": "Gameloft", | |
| 1197 | − "url": "https://www.gameloft.com", | |
| 1198 | − "careers_url": "https://jobs.smartrecruiters.com/company/gameloft", | |
| 1199 | − "sectors": [ | |
| 1200 | − "Jeux vidéo" | |
| 1201 | − ], | |
| 1202 | − "connector": "smartrecruiters", | |
| 1203 | − "status": "actif", | |
| 1204 | − "region": "Montréal" | |
| 1205 | − }, | |
| 1206 | − { | |
| 1207 | − "id": "gearboxquebec", | |
| 1208 | − "name": "Gearbox Studio Québec", | |
| 1209 | − "url": "", | |
| 1210 | − "careers_url": "https://job-boards.greenhouse.io/gearboxquebec", | |
| 1211 | − "sectors": [ | |
| 1212 | − "Jeux vidéo" | |
| 1213 | − ], | |
| 1214 | − "connector": "greenhouse", | |
| 1215 | − "status": "actif", | |
| 1216 | − "region": "Montréal, Québec" | |
| 1217 | − }, | |
| 1218 | − { | |
| 1219 | − "id": "genetec_inc", | |
| 1220 | − "name": "Genetec", | |
| 1221 | − "url": "https://genetec.com", | |
| 1222 | − "careers_url": "https://apply.workable.com/genetec-inc", | |
| 1223 | − "sectors": [], | |
| 1224 | − "connector": "workable", | |
| 1225 | − "status": "actif", | |
| 1226 | − "region": "Montréal" | |
| 1227 | − }, | |
| 1228 | − { | |
| 1229 | − "id": "gfs", | |
| 1230 | − "name": "Service alimentaire Gordon", | |
| 1231 | − "url": "https://gfs.ca", | |
| 1232 | − "careers_url": "https://gfs.wd5.myworkdayjobs.com/usjobs-french", | |
| 1233 | − "sectors": [ | |
| 1234 | − "manufacturier/commerce" | |
| 1235 | − ], | |
| 1236 | − "connector": "workday", | |
| 1237 | − "status": "actif", | |
| 1238 | − "region": "" | |
| 1239 | − }, | |
| 1240 | − { | |
| 1241 | − "id": "gologic", | |
| 1242 | − "name": "GoLogic", | |
| 1243 | − "url": "", | |
| 1244 | − "careers_url": "https://jobs.smartrecruiters.com/company/gologic", | |
| 1245 | − "sectors": [ | |
| 1246 | − "TI" | |
| 1247 | − ], | |
| 1248 | − "connector": "smartrecruiters", | |
| 1249 | − "status": "actif", | |
| 1250 | − "region": "Montréal" | |
| 1251 | − }, | |
| 1252 | − { | |
| 1253 | − "id": "gorh", | |
| 1254 | − "name": "Go RH", | |
| 1255 | − "url": "", | |
| 1256 | − "careers_url": "https://jobs.lever.co/gorh", | |
| 1257 | − "sectors": [ | |
| 1258 | − "Placement", | |
| 1259 | − "RH" | |
| 1260 | − ], | |
| 1261 | − "connector": "lever", | |
| 1262 | − "status": "actif", | |
| 1263 | − "region": "Montréal, Québec" | |
| 1264 | − }, | |
| 1265 | − { | |
| 1266 | − "id": "groupecanam", | |
| 1267 | − "name": "Groupe Canam", | |
| 1268 | − "url": "", | |
| 1269 | − "careers_url": "https://jobs.smartrecruiters.com/company/groupecanam", | |
| 1270 | − "sectors": [ | |
| 1271 | − "Production", | |
| 1272 | − "Construction" | |
| 1273 | − ], | |
| 1274 | − "connector": "smartrecruiters", | |
| 1275 | − "status": "actif", | |
| 1276 | − "region": "Saint-Georges" | |
| 1277 | − }, | |
| 1278 | − { | |
| 1279 | − "id": "gsk", | |
| 1280 | − "name": "GSK", | |
| 1281 | − "url": "", | |
| 1282 | − "careers_url": "https://gsk.wd5.myworkdayjobs.com/GSKCareers", | |
| 1283 | − "sectors": [ | |
| 1284 | − "Pharmaceutique" | |
| 1285 | − ], | |
| 1286 | − "connector": "workday", | |
| 1287 | − "status": "actif", | |
| 1288 | − "region": "Laval, Québec" | |
| 1289 | − }, | |
| 1290 | − { | |
| 1291 | − "id": "guichet_emplois", | |
| 1292 | − "name": "Guichet-Emplois (Canada)", | |
| 1293 | − "url": "https://www.guichetemplois.gc.ca", | |
| 1294 | − "careers_url": "https://www.guichetemplois.gc.ca/jobsearch/rechercheemplois?fprov=QC", | |
| 1295 | − "sectors": [ | |
| 1296 | − "Portail", | |
| 1297 | − "Tous secteurs" | |
| 1298 | − ], | |
| 1299 | − "connector": "portail", | |
| 1300 | − "status": "actif", | |
| 1301 | − "region": "Québec (province)", | |
| 1302 | − "aggregator": true | |
| 1303 | − }, | |
| 1304 | − { | |
| 1305 | − "id": "gurussolutions", | |
| 1306 | − "name": "GURUS Solutions", | |
| 1307 | − "url": "", | |
| 1308 | − "careers_url": "https://job-boards.greenhouse.io/gurussolutions", | |
| 1309 | − "sectors": [ | |
| 1310 | − "TI" | |
| 1311 | − ], | |
| 1312 | − "connector": "greenhouse", | |
| 1313 | − "status": "actif", | |
| 1314 | − "region": "Montréal" | |
| 1315 | − }, | |
| 1316 | − { | |
| 1317 | − "id": "hec_montreal", | |
| 1318 | − "name": "HEC Montréal", | |
| 1319 | − "url": "https://www.hec.ca", | |
| 1320 | − "careers_url": "https://tre.tbe.taleo.net/tre01/ats/careers/v2/jobSearch?org=NYQEDG&cws=40", | |
| 1321 | − "connector": "taleo_tbe", | |
| 1322 | − "sectors": [ | |
| 1323 | − "Éducation", | |
| 1324 | − "Administration" | |
| 1325 | − ], | |
| 1326 | − "region": "Montréal", | |
| 1327 | − "status": "actif" | |
| 1328 | − }, | |
| 1329 | − { | |
| 1330 | − "id": "hec_montreal_profs", | |
| 1331 | − "name": "HEC Montréal — corps professoral", | |
| 1332 | − "url": "https://www.hec.ca", | |
| 1333 | − "careers_url": "https://tre.tbe.taleo.net/tre01/ats/careers/v2/jobSearch?org=NYQEDG&cws=41", | |
| 1334 | − "connector": "taleo_tbe", | |
| 1335 | − "sectors": [ | |
| 1336 | − "Éducation", | |
| 1337 | − "Recherche" | |
| 1338 | − ], | |
| 1339 | − "region": "Montréal", | |
| 1340 | − "status": "actif" | |
| 1341 | − }, | |
| 1342 | − { | |
| 1343 | − "id": "hopper", | |
| 1344 | − "name": "Hopper", | |
| 1345 | − "url": "", | |
| 1346 | − "careers_url": "https://jobs.ashbyhq.com/hopper", | |
| 1347 | − "sectors": [ | |
| 1348 | − "TI", | |
| 1349 | − "Voyage" | |
| 1350 | − ], | |
| 1351 | − "connector": "ashby", | |
| 1352 | − "status": "actif", | |
| 1353 | − "region": "Montréal" | |
| 1354 | − }, | |
| 1355 | − { | |
| 1356 | − "id": "hoyoverse", | |
| 1357 | − "name": "HoYoverse", | |
| 1358 | − "url": "", | |
| 1359 | − "careers_url": "https://jobs.smartrecruiters.com/company/hoyoverse", | |
| 1360 | − "sectors": [ | |
| 1361 | − "Jeux vidéo" | |
| 1362 | − ], | |
| 1363 | − "connector": "smartrecruiters", | |
| 1364 | − "status": "actif", | |
| 1365 | − "region": "Montréal" | |
| 1366 | − }, | |
| 1367 | − { | |
| 1368 | − "id": "huaweicanada", | |
| 1369 | − "name": "Huawei Canada", | |
| 1370 | − "url": "", | |
| 1371 | − "careers_url": "https://huaweicanada.recruitee.com", | |
| 1372 | − "sectors": [ | |
| 1373 | − "TI", | |
| 1374 | − "Recherche" | |
| 1375 | − ], | |
| 1376 | − "connector": "recruitee", | |
| 1377 | − "status": "actif", | |
| 1378 | − "region": "Montréal" | |
| 1379 | − }, | |
| 1380 | − { | |
| 1381 | − "id": "hydroquebec", | |
| 1382 | − "name": "Hydro-Québec", | |
| 1383 | − "url": "https://www.hydroquebec.com", | |
| 1384 | − "careers_url": "https://emploi.hydroquebec.com", | |
| 1385 | − "connector": "successfactors", | |
| 1386 | − "sectors": [ | |
| 1387 | − "Énergie", | |
| 1388 | − "Génie", | |
| 1389 | − "TI", | |
| 1390 | − "Secteur public" | |
| 1391 | − ], | |
| 1392 | − "region": "Montréal, Québec (province)", | |
| 1393 | − "status": "actif" | |
| 1394 | − }, | |
| 1395 | − { | |
| 1396 | − "id": "ia_groupe", | |
| 1397 | − "name": "iA Groupe financier", | |
| 1398 | − "url": "https://ia.ca", | |
| 1399 | − "careers_url": "https://ia.wd3.myworkdayjobs.com/Professional", | |
| 1400 | − "sectors": [ | |
| 1401 | − "Assurance", | |
| 1402 | − "Finance", | |
| 1403 | − "TI" | |
| 1404 | − ], | |
| 1405 | − "connector": "workday", | |
| 1406 | − "status": "actif", | |
| 1407 | − "region": "Québec" | |
| 1408 | − }, | |
| 1409 | − { | |
| 1410 | − "id": "industrious", | |
| 1411 | − "name": "Industrious", | |
| 1412 | − "url": "", | |
| 1413 | − "careers_url": "https://jobs.ashbyhq.com/industrious", | |
| 1414 | − "sectors": [ | |
| 1415 | − "Immobilier", | |
| 1416 | − "Services" | |
| 1417 | − ], | |
| 1418 | − "connector": "ashby", | |
| 1419 | − "status": "actif", | |
| 1420 | − "region": "Montréal" | |
| 1421 | − }, | |
| 1422 | − { | |
| 1423 | − "id": "ino_ca", | |
| 1424 | − "name": "Luqia (INO)", | |
| 1425 | − "url": "", | |
| 1426 | − "careers_url": "https://ino-ca.breezy.hr", | |
| 1427 | − "sectors": [ | |
| 1428 | − "Optique-photonique", | |
| 1429 | − "Recherche" | |
| 1430 | − ], | |
| 1431 | − "connector": "breezy", | |
| 1432 | − "status": "actif", | |
| 1433 | − "region": "Québec" | |
| 1434 | − }, | |
| 1435 | − { | |
| 1436 | − "id": "intactfc", | |
| 1437 | − "name": "Intact Corporation financière", | |
| 1438 | − "url": "", | |
| 1439 | − "careers_url": "https://intactfc.wd3.myworkdayjobs.com/Intactfc", | |
| 1440 | − "sectors": [ | |
| 1441 | − "Assurance" | |
| 1442 | − ], | |
| 1443 | − "connector": "workday", | |
| 1444 | − "status": "actif", | |
| 1445 | − "region": "Montréal" | |
| 1446 | − }, | |
| 1447 | − { | |
| 1448 | − "id": "investpsp", | |
| 1449 | − "name": "Investissements PSP", | |
| 1450 | − "url": "https://investpsp.com", | |
| 1451 | − "careers_url": "https://investpsp.wd3.myworkdayjobs.com/psp_careers", | |
| 1452 | − "sectors": [], | |
| 1453 | − "connector": "workday", | |
| 1454 | − "status": "actif", | |
| 1455 | − "region": "Montréal" | |
| 1456 | − }, | |
| 1457 | − { | |
| 1458 | − "id": "investquebec", | |
| 1459 | − "name": "Investissement Québec", | |
| 1460 | − "url": "https://investquebec.com", | |
| 1461 | − "careers_url": "https://investquebec.wd10.myworkdayjobs.com/Ext", | |
| 1462 | − "sectors": [], | |
| 1463 | − "connector": "workday", | |
| 1464 | − "status": "actif", | |
| 1465 | − "region": "Québec" | |
| 1466 | − }, | |
| 1467 | − { | |
| 1468 | − "id": "jexcelleinc", | |
| 1469 | − "name": "J'Excelle", | |
| 1470 | − "url": "", | |
| 1471 | − "careers_url": "https://jobs.smartrecruiters.com/company/JExcelleInc", | |
| 1472 | − "sectors": [ | |
| 1473 | − "Placement" | |
| 1474 | − ], | |
| 1475 | − "connector": "smartrecruiters", | |
| 1476 | − "status": "actif", | |
| 1477 | − "region": "Montréal, Laval, Gatineau" | |
| 1478 | − }, | |
| 1479 | − { | |
| 1480 | − "id": "jgrivesud", | |
| 1481 | − "name": "JG Rive-Sud (GFS)", | |
| 1482 | − "url": "https://jgfruitsetlegumes.com", | |
| 1483 | − "careers_url": "https://gfs.wd5.myworkdayjobs.com/jgrive-sud", | |
| 1484 | − "sectors": [ | |
| 1485 | − "manufacturier/commerce" | |
| 1486 | − ], | |
| 1487 | − "connector": "workday", | |
| 1488 | − "status": "actif", | |
| 1489 | − "region": "" | |
| 1490 | − }, | |
| 1491 | − { | |
| 1492 | − "id": "jobillico", | |
| 1493 | − "name": "Jobillico", | |
| 1494 | − "url": "https://www.jobillico.com", | |
| 1495 | − "careers_url": "https://www.jobillico.com/recherche-emploi", | |
| 1496 | − "sectors": [ | |
| 1497 | − "Portail", | |
| 1498 | − "Tous secteurs" | |
| 1499 | − ], | |
| 1500 | − "connector": "portail", | |
| 1501 | − "status": "actif", | |
| 1502 | − "region": "Québec (province)", | |
| 1503 | − "aggregator": true | |
| 1504 | − }, | |
| 1505 | − { | |
| 1506 | − "id": "korem", | |
| 1507 | − "name": "Korem", | |
| 1508 | − "url": "", | |
| 1509 | − "careers_url": "https://korem.bamboohr.com/careers", | |
| 1510 | − "sectors": [ | |
| 1511 | − "TI" | |
| 1512 | − ], | |
| 1513 | − "connector": "bamboohr", | |
| 1514 | − "status": "actif", | |
| 1515 | − "region": "Québec" | |
| 1516 | − }, | |
| 1517 | − { | |
| 1518 | − "id": "kpidigital", | |
| 1519 | − "name": "KPI Digital", | |
| 1520 | − "url": "", | |
| 1521 | − "careers_url": "https://kpidigital.bamboohr.com/careers", | |
| 1522 | − "sectors": [ | |
| 1523 | − "TI", | |
| 1524 | − "Données" | |
| 1525 | − ], | |
| 1526 | − "connector": "bamboohr", | |
| 1527 | − "status": "actif", | |
| 1528 | − "region": "Montréal" | |
| 1529 | − }, | |
| 1530 | − { | |
| 1531 | − "id": "kruger", | |
| 1532 | − "name": "Kruger", | |
| 1533 | − "url": "https://www.kruger.com", | |
| 1534 | − "careers_url": "https://tre.tbe.taleo.net/tre01/ats/careers/v2/jobSearch?org=KRUGER2&cws=76", | |
| 1535 | − "connector": "taleo_tbe", | |
| 1536 | − "sectors": [ | |
| 1537 | − "Pâtes et papiers", | |
| 1538 | − "Manufacturier" | |
| 1539 | − ], | |
| 1540 | − "region": "Montréal, Trois-Rivières", | |
| 1541 | − "status": "actif" | |
| 1542 | − }, | |
| 1543 | − { | |
| 1544 | − "id": "labelink", | |
| 1545 | − "name": "Produits Labelink", | |
| 1546 | − "url": "", | |
| 1547 | − "careers_url": "https://labelink.bamboohr.com/careers", | |
| 1548 | − "sectors": [ | |
| 1549 | − "Impression", | |
| 1550 | − "Manufacture" | |
| 1551 | − ], | |
| 1552 | − "connector": "bamboohr", | |
| 1553 | − "status": "actif", | |
| 1554 | − "region": "Montréal, Laval, Granby" | |
| 1555 | − }, | |
| 1556 | − { | |
| 1557 | − "id": "lamour", | |
| 1558 | − "name": "Lamour", | |
| 1559 | − "url": "", | |
| 1560 | − "careers_url": "https://apply.workable.com/lamour", | |
| 1561 | − "sectors": [ | |
| 1562 | − "Textile", | |
| 1563 | − "Manufacture" | |
| 1564 | − ], | |
| 1565 | − "connector": "workable", | |
| 1566 | − "status": "actif", | |
| 1567 | − "region": "Montréal" | |
| 1568 | − }, | |
| 1569 | − { | |
| 1570 | − "id": "lassonde", | |
| 1571 | − "name": "Industries Lassonde", | |
| 1572 | − "url": "https://www.lassonde.com", | |
| 1573 | − "careers_url": "https://www.lassonde.com/fr/emplois/", | |
| 1574 | − "sectors": [ | |
| 1575 | − "Agroalimentaire", | |
| 1576 | − "Fabrication" | |
| 1577 | − ], | |
| 1578 | − "connector": "custom", | |
| 1579 | − "status": "actif", | |
| 1580 | − "region": "Rougemont, Montréal" | |
| 1581 | − }, | |
| 1582 | − { | |
| 1583 | − "id": "levio", | |
| 1584 | − "name": "Levio", | |
| 1585 | − "url": "", | |
| 1586 | − "careers_url": "https://job-boards.greenhouse.io/levio", | |
| 1587 | − "sectors": [ | |
| 1588 | − "TI" | |
| 1589 | − ], | |
| 1590 | − "connector": "greenhouse", | |
| 1591 | − "status": "actif", | |
| 1592 | − "region": "Québec, Montréal" | |
| 1593 | − }, | |
| 1594 | − { | |
| 1595 | − "id": "lg2", | |
| 1596 | − "name": "LG2", | |
| 1597 | − "url": "", | |
| 1598 | − "careers_url": "https://lg2.recruitee.com", | |
| 1599 | − "sectors": [ | |
| 1600 | − "Publicité", | |
| 1601 | − "Création" | |
| 1602 | − ], | |
| 1603 | − "connector": "recruitee", | |
| 1604 | − "status": "actif", | |
| 1605 | − "region": "Montréal, Québec" | |
| 1606 | − }, | |
| 1607 | − { | |
| 1608 | − "id": "lidd", | |
| 1609 | − "name": "LIDD Consultants", | |
| 1610 | − "url": "", | |
| 1611 | − "careers_url": "https://apply.workable.com/lidd", | |
| 1612 | − "sectors": [ | |
| 1613 | − "Conseil", | |
| 1614 | − "Logistique" | |
| 1615 | − ], | |
| 1616 | − "connector": "workable", | |
| 1617 | − "status": "actif", | |
| 1618 | − "region": "Montréal" | |
| 1619 | − }, | |
| 1620 | − { | |
| 1621 | − "id": "lightspeedhq", | |
| 1622 | − "name": "Lightspeed Commerce", | |
| 1623 | − "url": "", | |
| 1624 | − "careers_url": "https://jobs.ashbyhq.com/lightspeedhq", | |
| 1625 | − "sectors": [ | |
| 1626 | − "TI" | |
| 1627 | − ], | |
| 1628 | − "connector": "ashby", | |
| 1629 | − "status": "actif", | |
| 1630 | − "region": "Montréal" | |
| 1631 | − }, | |
| 1632 | − { | |
| 1633 | − "id": "logisco", | |
| 1634 | − "name": "Logisco", | |
| 1635 | − "url": "https://logisco.com", | |
| 1636 | − "careers_url": "https://logisco.bamboohr.com/careers", | |
| 1637 | − "sectors": [ | |
| 1638 | − "Immobilier" | |
| 1639 | − ], | |
| 1640 | − "connector": "bamboohr", | |
| 1641 | − "status": "actif", | |
| 1642 | − "region": "" | |
| 1643 | − }, | |
| 1644 | − { | |
| 1645 | − "id": "lush", | |
| 1646 | − "name": "Lush Cosmétiques", | |
| 1647 | − "url": "", | |
| 1648 | − "careers_url": "https://job-boards.greenhouse.io/lush", | |
| 1649 | − "sectors": [ | |
| 1650 | − "Commerce de détail" | |
| 1651 | − ], | |
| 1652 | − "connector": "greenhouse", | |
| 1653 | − "status": "actif", | |
| 1654 | − "region": "Montréal, Québec" | |
| 1655 | − }, | |
| 1656 | − { | |
| 1657 | − "id": "mackenzie", | |
| 1658 | − "name": "Placements Mackenzie (Power/IGM)", | |
| 1659 | − "url": "https://www.placementsmackenzie.com", | |
| 1660 | − "careers_url": "https://careersfr-mackenzieinvestments.icims.com/jobs/search?ss=1", | |
| 1661 | − "connector": "icims", | |
| 1662 | − "sectors": [ | |
| 1663 | − "Finance" | |
| 1664 | − ], | |
| 1665 | − "region": "Montréal", | |
| 1666 | − "status": "actif" | |
| 1667 | − }, | |
| 1668 | − { | |
| 1669 | − "id": "maintainx", | |
| 1670 | − "name": "MaintainX", | |
| 1671 | − "url": "", | |
| 1672 | − "careers_url": "https://jobs.ashbyhq.com/maintainx", | |
| 1673 | − "sectors": [ | |
| 1674 | − "TI", | |
| 1675 | − "SaaS" | |
| 1676 | − ], | |
| 1677 | − "connector": "ashby", | |
| 1678 | − "status": "actif", | |
| 1679 | − "region": "Montréal" | |
| 1680 | − }, | |
| 1681 | − { | |
| 1682 | − "id": "manulife", | |
| 1683 | − "name": "Manuvie", | |
| 1684 | − "url": "", | |
| 1685 | − "careers_url": "https://manulife.wd3.myworkdayjobs.com/MFCJH_Jobs", | |
| 1686 | − "sectors": [ | |
| 1687 | − "Assurance", | |
| 1688 | − "Finance" | |
| 1689 | − ], | |
| 1690 | − "connector": "workday", | |
| 1691 | − "status": "actif", | |
| 1692 | − "region": "Montréal" | |
| 1693 | − }, | |
| 1694 | − { | |
| 1695 | − "id": "mattelinc", | |
| 1696 | − "name": "Mattel (Mega Bloks)", | |
| 1697 | − "url": "", | |
| 1698 | − "careers_url": "https://jobs.smartrecruiters.com/company/MattelInc", | |
| 1699 | − "sectors": [ | |
| 1700 | − "Jouets", | |
| 1701 | − "Manufacture" | |
| 1702 | − ], | |
| 1703 | − "connector": "smartrecruiters", | |
| 1704 | − "status": "actif", | |
| 1705 | − "region": "Montréal" | |
| 1706 | − }, | |
| 1707 | − { | |
| 1708 | − "id": "mccarthy_tetrault", | |
| 1709 | − "name": "McCarthy Tétrault", | |
| 1710 | − "url": "https://www.mccarthy.ca", | |
| 1711 | − "careers_url": "https://careers-mccarthyca.icims.com/jobs/search?ss=1", | |
| 1712 | − "sectors": [ | |
| 1713 | − "Juridique", | |
| 1714 | − "Services professionnels" | |
| 1715 | − ], | |
| 1716 | − "connector": "icims", | |
| 1717 | − "status": "actif", | |
| 1718 | − "region": "Montréal, Québec" | |
| 1719 | − }, | |
| 1720 | − { | |
| 1721 | − "id": "mcgill", | |
| 1722 | − "name": "Université McGill", | |
| 1723 | − "url": "https://www.mcgill.ca", | |
| 1724 | − "careers_url": "https://mcgill.wd3.myworkdayjobs.com/McGill_Careers", | |
| 1725 | − "sectors": [ | |
| 1726 | − "Éducation", | |
| 1727 | − "Recherche", | |
| 1728 | − "Administration" | |
| 1729 | − ], | |
| 1730 | − "connector": "workday", | |
| 1731 | − "status": "actif", | |
| 1732 | − "region": "Montréal" | |
| 1733 | − }, | |
| 1734 | − { | |
| 1735 | − "id": "mckesson", | |
| 1736 | − "name": "McKesson Canada", | |
| 1737 | − "url": "", | |
| 1738 | − "careers_url": "https://mckesson.wd3.myworkdayjobs.com/External_Careers", | |
| 1739 | − "sectors": [ | |
| 1740 | − "Pharmaceutique", | |
| 1741 | − "Distribution" | |
| 1742 | − ], | |
| 1743 | − "connector": "workday", | |
| 1744 | − "status": "actif", | |
| 1745 | − "region": "Montréal" | |
| 1746 | − }, | |
| 1747 | − { | |
| 1748 | − "id": "medfar", | |
| 1749 | − "name": "MEDFAR Solutions Cliniques", | |
| 1750 | − "url": "", | |
| 1751 | − "careers_url": "https://jobs.smartrecruiters.com/company/Medfar", | |
| 1752 | − "sectors": [ | |
| 1753 | − "TI", | |
| 1754 | − "Santé" | |
| 1755 | − ], | |
| 1756 | − "connector": "smartrecruiters", | |
| 1757 | − "status": "actif", | |
| 1758 | − "region": "Montréal" | |
| 1759 | − }, | |
| 1760 | − { | |
| 1761 | − "id": "medialo", | |
| 1762 | − "name": "Médialo", | |
| 1763 | − "url": "", | |
| 1764 | − "careers_url": "https://medialo.recruitee.com", | |
| 1765 | − "sectors": [ | |
| 1766 | − "Médias" | |
| 1767 | − ], | |
| 1768 | − "connector": "recruitee", | |
| 1769 | − "status": "actif", | |
| 1770 | − "region": "Mont-Laurier, Terrebonne" | |
| 1771 | − }, | |
| 1772 | − { | |
| 1773 | − "id": "messer_canada", | |
| 1774 | − "name": "Messer Canada", | |
| 1775 | − "url": "https://www.messer-ca.com", | |
| 1776 | − "careers_url": "https://recruiting.ultipro.com/MES1005MESR/JobBoard/dbd63926-d756-486f-a254-b2a6ede1d26e", | |
| 1777 | − "sectors": [ | |
| 1778 | − "Gaz industriels", | |
| 1779 | − "Industrie" | |
| 1780 | − ], | |
| 1781 | − "connector": "ultipro", | |
| 1782 | − "status": "actif", | |
| 1783 | − "region": "Montréal, Québec, Saint-Georges" | |
| 1784 | − }, | |
| 1785 | − { | |
| 1786 | − "id": "microhabitat", | |
| 1787 | − "name": "MicroHabitat", | |
| 1788 | − "url": "", | |
| 1789 | − "careers_url": "https://microhabitat.breezy.hr", | |
| 1790 | − "sectors": [ | |
| 1791 | − "Agriculture urbaine" | |
| 1792 | − ], | |
| 1793 | − "connector": "breezy", | |
| 1794 | − "status": "actif", | |
| 1795 | − "region": "Montréal, Québec" | |
| 1796 | − }, | |
| 1797 | − { | |
| 1798 | − "id": "mila_2", | |
| 1799 | − "name": "Mila — Institut québécois d'IA", | |
| 1800 | − "url": "https://mila.quebec", | |
| 1801 | − "careers_url": "https://apply.workable.com/mila-2", | |
| 1802 | − "sectors": [], | |
| 1803 | − "connector": "workable", | |
| 1804 | − "status": "actif", | |
| 1805 | − "region": "Montréal" | |
| 1806 | − }, | |
| 1807 | − { | |
| 1808 | − "id": "mirego", | |
| 1809 | − "name": "Mirego", | |
| 1810 | − "url": "", | |
| 1811 | − "careers_url": "https://jobs.lever.co/mirego", | |
| 1812 | − "sectors": [ | |
| 1813 | − "TI" | |
| 1814 | − ], | |
| 1815 | − "connector": "lever", | |
| 1816 | − "status": "actif", | |
| 1817 | − "region": "Québec, Montréal" | |
| 1818 | − }, | |
| 1819 | − { | |
| 1820 | − "id": "mistplay", | |
| 1821 | − "name": "Mistplay", | |
| 1822 | − "url": "https://www.mistplay.com", | |
| 1823 | − "careers_url": "https://jobs.lever.co/mistplay", | |
| 1824 | − "sectors": [ | |
| 1825 | − "TI", | |
| 1826 | − "Jeu mobile" | |
| 1827 | − ], | |
| 1828 | − "connector": "lever", | |
| 1829 | − "status": "actif", | |
| 1830 | − "region": "Montréal" | |
| 1831 | − }, | |
| 1832 | − { | |
| 1833 | − "id": "mistral_ai", | |
| 1834 | − "name": "Mistral AI", | |
| 1835 | − "url": "", | |
| 1836 | − "careers_url": "https://jobs.ashbyhq.com/mistral.ai", | |
| 1837 | − "sectors": [ | |
| 1838 | − "TI", | |
| 1839 | − "IA" | |
| 1840 | − ], | |
| 1841 | − "connector": "ashby", | |
| 1842 | − "status": "actif", | |
| 1843 | − "region": "Montréal" | |
| 1844 | − }, | |
| 1845 | − { | |
| 1846 | − "id": "mitacs", | |
| 1847 | − "name": "Mitacs", | |
| 1848 | − "url": "", | |
| 1849 | − "careers_url": "https://mitacs.bamboohr.com/careers", | |
| 1850 | − "sectors": [ | |
| 1851 | − "Recherche", | |
| 1852 | − "OBNL" | |
| 1853 | − ], | |
| 1854 | − "connector": "bamboohr", | |
| 1855 | − "status": "actif", | |
| 1856 | − "region": "Montréal" | |
| 1857 | − }, | |
| 1858 | − { | |
| 1859 | − "id": "mitsubishi_hc_capital", | |
| 1860 | − "name": "Mitsubishi HC Capital Canada", | |
| 1861 | − "url": "https://www.mhccna.com", | |
| 1862 | − "careers_url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=b3ef4f03-f8ff-4ded-80c8-6dd5c5a224f7&ccId=9200144510729_2&lang=fr_CA", | |
| 1863 | − "sectors": [ | |
| 1864 | − "Finance", | |
| 1865 | − "Financement commercial" | |
| 1866 | − ], | |
| 1867 | − "connector": "adp", | |
| 1868 | − "status": "actif", | |
| 1869 | − "region": "Laval, Trois-Rivières" | |
| 1870 | − }, | |
| 1871 | − { | |
| 1872 | − "id": "msi_gestion", | |
| 1873 | − "name": "MSI Gestion immobilière", | |
| 1874 | − "url": "https://www.msimmobiliers.com", | |
| 1875 | − "careers_url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=47d4e792-26e5-471c-92ac-73c60131bab8&ccId=19000101_000001&lang=fr_CA", | |
| 1876 | − "sectors": [ | |
| 1877 | − "Immobilier", | |
| 1878 | − "Gestion immobilière" | |
| 1879 | − ], | |
| 1880 | − "connector": "adp", | |
| 1881 | − "status": "actif", | |
| 1882 | − "region": "Montréal" | |
| 1883 | − }, | |
| 1884 | − { | |
| 1885 | − "id": "mthreerecruitingportal", | |
| 1886 | − "name": "mthree", | |
| 1887 | − "url": "", | |
| 1888 | − "careers_url": "https://job-boards.greenhouse.io/mthreerecruitingportal", | |
| 1889 | − "sectors": [ | |
| 1890 | − "TI", | |
| 1891 | − "Placement" | |
| 1892 | − ], | |
| 1893 | − "connector": "greenhouse", | |
| 1894 | − "status": "actif", | |
| 1895 | − "region": "Montréal" | |
| 1896 | − }, | |
| 1897 | − { | |
| 1898 | − "id": "mxo", | |
| 1899 | − "name": "MXO", | |
| 1900 | − "url": "https://mxoconseil.com", | |
| 1901 | − "careers_url": "https://mxo.bamboohr.com/careers", | |
| 1902 | − "sectors": [ | |
| 1903 | − "manufacturier/commerce" | |
| 1904 | − ], | |
| 1905 | − "connector": "bamboohr", | |
| 1906 | − "status": "actif", | |
| 1907 | − "region": "" | |
| 1908 | − }, | |
| 1909 | − { | |
| 1910 | − "id": "national", | |
| 1911 | − "name": "NATIONAL", | |
| 1912 | − "url": "", | |
| 1913 | − "careers_url": "https://job-boards.greenhouse.io/national", | |
| 1914 | − "sectors": [ | |
| 1915 | − "Relations publiques" | |
| 1916 | − ], | |
| 1917 | − "connector": "greenhouse", | |
| 1918 | − "status": "actif", | |
| 1919 | − "region": "Montréal" | |
| 1920 | − }, | |
| 1921 | − { | |
| 1922 | − "id": "nexapp", | |
| 1923 | − "name": "Nexapp", | |
| 1924 | − "url": "", | |
| 1925 | − "careers_url": "https://nexapp.bamboohr.com/careers", | |
| 1926 | − "sectors": [ | |
| 1927 | − "TI", | |
| 1928 | − "Web" | |
| 1929 | − ], | |
| 1930 | − "connector": "bamboohr", | |
| 1931 | − "status": "actif", | |
| 1932 | − "region": "Québec" | |
| 1933 | − }, | |
| 1934 | − { | |
| 1935 | − "id": "no_saint", | |
| 1936 | − "name": "No Saint", | |
| 1937 | − "url": "", | |
| 1938 | − "careers_url": "https://jobs.ashbyhq.com/no-saint", | |
| 1939 | − "sectors": [ | |
| 1940 | − "Création" | |
| 1941 | − ], | |
| 1942 | − "connector": "ashby", | |
| 1943 | − "status": "actif", | |
| 1944 | − "region": "Montréal" | |
| 1945 | − }, | |
| 1946 | − { | |
| 1947 | − "id": "nomic", | |
| 1948 | − "name": "Nomic Bio", | |
| 1949 | − "url": "", | |
| 1950 | − "careers_url": "https://jobs.ashbyhq.com/nomic", | |
| 1951 | − "sectors": [ | |
| 1952 | − "Biotechnologie" | |
| 1953 | − ], | |
| 1954 | − "connector": "ashby", | |
| 1955 | − "status": "actif", | |
| 1956 | − "region": "Montréal" | |
| 1957 | − }, | |
| 1958 | − { | |
| 1959 | − "id": "nora_pharma", | |
| 1960 | − "name": "Nora Pharma", | |
| 1961 | − "url": "", | |
| 1962 | − "careers_url": "https://nora-pharma.breezy.hr", | |
| 1963 | − "sectors": [ | |
| 1964 | − "Pharmaceutique" | |
| 1965 | − ], | |
| 1966 | − "connector": "breezy", | |
| 1967 | − "status": "actif", | |
| 1968 | − "region": "Laval, Montréal, Granby" | |
| 1969 | − }, | |
| 1970 | − { | |
| 1971 | − "id": "nortera", | |
| 1972 | − "name": "Nortera", | |
| 1973 | − "url": "https://norterafoods.com", | |
| 1974 | − "careers_url": "https://recruiting.ultipro.ca/NOR5100NOFD/JobBoard/e3ce2e8a-b8fc-42c9-97cf-ea17f4d5dd1d/", | |
| 1975 | − "connector": "ultipro", | |
| 1976 | − "sectors": [ | |
| 1977 | − "Agroalimentaire", | |
| 1978 | − "Manufacturier" | |
| 1979 | − ], | |
| 1980 | − "region": "Montérégie, Brossard", | |
| 1981 | − "status": "actif" | |
| 1982 | − }, | |
| 1983 | − { | |
| 1984 | − "id": "northwestrubber", | |
| 1985 | − "name": "North West Rubber", | |
| 1986 | − "url": "", | |
| 1987 | − "careers_url": "https://northwestrubber.bamboohr.com/careers", | |
| 1988 | − "sectors": [ | |
| 1989 | − "Manufacture" | |
| 1990 | − ], | |
| 1991 | − "connector": "bamboohr", | |
| 1992 | − "status": "actif", | |
| 1993 | − "region": "Sherbrooke" | |
| 1994 | − }, | |
| 1995 | − { | |
| 1996 | − "id": "novipro", | |
| 1997 | − "name": "NOVIPRO", | |
| 1998 | − "url": "", | |
| 1999 | − "careers_url": "https://novipro.breezy.hr", | |
| 2000 | − "sectors": [ | |
| 2001 | − "TI" | |
| 2002 | − ], | |
| 2003 | − "connector": "breezy", | |
| 2004 | − "status": "actif", | |
| 2005 | − "region": "Montréal, Longueuil" | |
| 2006 | − }, | |
| 2007 | − { | |
| 2008 | − "id": "nuovophotography", | |
| 2009 | − "name": "Nuovo Photography", | |
| 2010 | − "url": "", | |
| 2011 | − "careers_url": "https://apply.workable.com/nuovophotography", | |
| 2012 | − "sectors": [ | |
| 2013 | − "Photographie" | |
| 2014 | − ], | |
| 2015 | − "connector": "workable", | |
| 2016 | − "status": "actif", | |
| 2017 | − "region": "Montréal" | |
| 2018 | − }, | |
| 2019 | − { | |
| 2020 | − "id": "omni_hotels_gestion", | |
| 2021 | − "name": "Omni Hôtel Mont-Royal", | |
| 2022 | − "url": "https://www.omnihotels.com/fr/hotels/montreal-mont-royal", | |
| 2023 | − "careers_url": "https://externalmanager-omnihotels.icims.com/jobs/search?ss=1", | |
| 2024 | − "sectors": [ | |
| 2025 | − "Hôtellerie", | |
| 2026 | − "Gestion" | |
| 2027 | − ], | |
| 2028 | − "connector": "icims", | |
| 2029 | − "status": "actif", | |
| 2030 | − "region": "Montréal" | |
| 2031 | − }, | |
| 2032 | − { | |
| 2033 | − "id": "omni_hotels_horaire", | |
| 2034 | − "name": "Omni Hôtel Mont-Royal", | |
| 2035 | − "url": "https://www.omnihotels.com/fr/hotels/montreal-mont-royal", | |
| 2036 | − "careers_url": "https://externalhourly-omnihotels.icims.com/jobs/search?ss=1", | |
| 2037 | − "sectors": [ | |
| 2038 | − "Hôtellerie", | |
| 2039 | − "Restauration" | |
| 2040 | − ], | |
| 2041 | − "connector": "icims", | |
| 2042 | − "status": "actif", | |
| 2043 | − "region": "Montréal" | |
| 2044 | − }, | |
| 2045 | − { | |
| 2046 | − "id": "onrunning", | |
| 2047 | − "name": "On Running", | |
| 2048 | − "url": "", | |
| 2049 | − "careers_url": "https://job-boards.greenhouse.io/onrunning", | |
| 2050 | − "sectors": [ | |
| 2051 | − "Commerce de détail", | |
| 2052 | − "Sport" | |
| 2053 | − ], | |
| 2054 | − "connector": "greenhouse", | |
| 2055 | − "status": "actif", | |
| 2056 | − "region": "Montréal" | |
| 2057 | − }, | |
| 2058 | − { | |
| 2059 | − "id": "opalrt", | |
| 2060 | − "name": "OPAL-RT Technologies", | |
| 2061 | − "url": "", | |
| 2062 | − "careers_url": "https://opalrt.bamboohr.com/careers", | |
| 2063 | − "sectors": [ | |
| 2064 | − "TI", | |
| 2065 | − "Ingénierie" | |
| 2066 | − ], | |
| 2067 | − "connector": "bamboohr", | |
| 2068 | − "status": "actif", | |
| 2069 | − "region": "Montréal" | |
| 2070 | − }, | |
| 2071 | − { | |
| 2072 | − "id": "osedea", | |
| 2073 | − "name": "OSEDEA", | |
| 2074 | − "url": "", | |
| 2075 | − "careers_url": "https://jobs.lever.co/osedea", | |
| 2076 | − "sectors": [ | |
| 2077 | − "TI", | |
| 2078 | − "Web" | |
| 2079 | − ], | |
| 2080 | − "connector": "lever", | |
| 2081 | − "status": "actif", | |
| 2082 | − "region": "Montréal" | |
| 2083 | − }, | |
| 2084 | − { | |
| 2085 | − "id": "osgoode_properties", | |
| 2086 | − "name": "Osgoode Properties", | |
| 2087 | − "url": "https://www.osgoodeproperties.com", | |
| 2088 | − "careers_url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=c6a2e782-c971-4a6d-9a63-1365f5ce7d21&ccId=19000101_000001&lang=fr_CA", | |
| 2089 | − "connector": "adp", | |
| 2090 | − "sectors": [ | |
| 2091 | − "Immobilier" | |
| 2092 | − ], | |
| 2093 | − "region": "Gatineau", | |
| 2094 | − "status": "actif" | |
| 2095 | − }, | |
| 2096 | − { | |
| 2097 | − "id": "ott", | |
| 2098 | − "name": "OTT Financial", | |
| 2099 | − "url": "", | |
| 2100 | − "careers_url": "https://ott.bamboohr.com/careers", | |
| 2101 | − "sectors": [ | |
| 2102 | − "Finance" | |
| 2103 | − ], | |
| 2104 | − "connector": "bamboohr", | |
| 2105 | − "status": "actif", | |
| 2106 | − "region": "Montréal" | |
| 2107 | − }, | |
| 2108 | − { | |
| 2109 | − "id": "peoplecanfly", | |
| 2110 | − "name": "People Can Fly", | |
| 2111 | − "url": "", | |
| 2112 | − "careers_url": "https://jobs.smartrecruiters.com/company/PeopleCanFly", | |
| 2113 | − "sectors": [ | |
| 2114 | − "Jeux vidéo" | |
| 2115 | − ], | |
| 2116 | − "connector": "smartrecruiters", | |
| 2117 | − "status": "actif", | |
| 2118 | − "region": "Montréal" | |
| 2119 | − }, | |
| 2120 | − { | |
| 2121 | − "id": "petalmd", | |
| 2122 | − "name": "Petal", | |
| 2123 | − "url": "", | |
| 2124 | − "careers_url": "https://petalmd.recruitee.com", | |
| 2125 | − "sectors": [ | |
| 2126 | − "TI", | |
| 2127 | − "Santé" | |
| 2128 | − ], | |
| 2129 | − "connector": "recruitee", | |
| 2130 | − "status": "actif", | |
| 2131 | − "region": "Montréal, Québec" | |
| 2132 | − }, | |
| 2133 | − { | |
| 2134 | − "id": "pfizer", | |
| 2135 | − "name": "Pfizer Canada", | |
| 2136 | − "url": "", | |
| 2137 | − "careers_url": "https://pfizer.wd1.myworkdayjobs.com/PfizerCareers", | |
| 2138 | − "sectors": [ | |
| 2139 | − "Pharmaceutique" | |
| 2140 | − ], | |
| 2141 | − "connector": "workday", | |
| 2142 | − "status": "actif", | |
| 2143 | − "region": "Kirkland" | |
| 2144 | − }, | |
| 2145 | − { | |
| 2146 | − "id": "playmind", | |
| 2147 | − "name": "Playmind", | |
| 2148 | − "url": "", | |
| 2149 | − "careers_url": "https://jobs.smartrecruiters.com/company/playmind", | |
| 2150 | − "sectors": [ | |
| 2151 | − "Jeux vidéo" | |
| 2152 | − ], | |
| 2153 | − "connector": "smartrecruiters", | |
| 2154 | − "status": "actif", | |
| 2155 | − "region": "Montréal" | |
| 2156 | − }, | |
| 2157 | − { | |
| 2158 | − "id": "plusgrade", | |
| 2159 | − "name": "Plusgrade", | |
| 2160 | − "url": "https://plusgrade.com", | |
| 2161 | − "careers_url": "https://plusgrade.wd10.myworkdayjobs.com/Plusgrade_External_Site", | |
| 2162 | − "sectors": [], | |
| 2163 | − "connector": "workday", | |
| 2164 | − "status": "actif", | |
| 2165 | − "region": "Montréal" | |
| 2166 | − }, | |
| 2167 | − { | |
| 2168 | − "id": "poka", | |
| 2169 | − "name": "Poka", | |
| 2170 | − "url": "https://www.poka.io", | |
| 2171 | − "careers_url": "https://job-boards.greenhouse.io/poka", | |
| 2172 | − "sectors": [ | |
| 2173 | − "TI", | |
| 2174 | − "SaaS manufacturier" | |
| 2175 | − ], | |
| 2176 | − "connector": "greenhouse", | |
| 2177 | − "status": "actif", | |
| 2178 | − "region": "Québec" | |
| 2179 | − }, | |
| 2180 | − { | |
| 2181 | − "id": "portagecybertech", | |
| 2182 | − "name": "Portage CyberTech", | |
| 2183 | − "url": "", | |
| 2184 | − "careers_url": "https://portagecybertech.bamboohr.com/careers", | |
| 2185 | − "sectors": [ | |
| 2186 | − "TI", | |
| 2187 | − "Cybersécurité" | |
| 2188 | − ], | |
| 2189 | − "connector": "bamboohr", | |
| 2190 | − "status": "actif", | |
| 2191 | − "region": "Gatineau, Montréal" | |
| 2192 | − }, | |
| 2193 | − { | |
| 2194 | − "id": "potloc", | |
| 2195 | − "name": "Potloc", | |
| 2196 | − "url": "https://www.potloc.com", | |
| 2197 | − "careers_url": "https://jobs.lever.co/Potloc", | |
| 2198 | − "sectors": [ | |
| 2199 | − "TI", | |
| 2200 | − "Études de marché" | |
| 2201 | − ], | |
| 2202 | − "connector": "lever", | |
| 2203 | − "status": "actif", | |
| 2204 | − "region": "Montréal" | |
| 2205 | − }, | |
| 2206 | − { | |
| 2207 | − "id": "pouletrouge", | |
| 2208 | − "name": "Poulet Rouge", | |
| 2209 | − "url": "https://poulet-rouge.ca", | |
| 2210 | − "careers_url": "https://pouletrouge.bamboohr.com/careers", | |
| 2211 | − "sectors": [ | |
| 2212 | − "restauration" | |
| 2213 | − ], | |
| 2214 | − "connector": "bamboohr", | |
| 2215 | − "status": "actif", | |
| 2216 | − "region": "Montréal" | |
| 2217 | − }, | |
| 2218 | − { | |
| 2219 | − "id": "produits_kruger", | |
| 2220 | − "name": "Produits Kruger", | |
| 2221 | − "url": "https://www.produitskruger.ca", | |
| 2222 | − "careers_url": "https://tre.tbe.taleo.net/tre01/ats/careers/v2/jobSearch?org=KRUGER2&cws=78", | |
| 2223 | − "connector": "taleo_tbe", | |
| 2224 | − "sectors": [ | |
| 2225 | − "Manufacturier", | |
| 2226 | − "Biens de consommation" | |
| 2227 | − ], | |
| 2228 | − "region": "Gatineau, Crabtree", | |
| 2229 | − "status": "actif" | |
| 2230 | − }, | |
| 2231 | − { | |
| 2232 | − "id": "promutuel", | |
| 2233 | − "name": "Promutuel Assurance", | |
| 2234 | − "url": "https://promutuelassurance.ca", | |
| 2235 | − "careers_url": "https://promutuel.wd3.myworkdayjobs.com/promutuel_carrieres", | |
| 2236 | − "sectors": [], | |
| 2237 | − "connector": "workday", | |
| 2238 | − "status": "actif", | |
| 2239 | − "region": "Québec" | |
| 2240 | − }, | |
| 2241 | − { | |
| 2242 | − "id": "qsl", | |
| 2243 | − "name": "QSL", | |
| 2244 | − "url": "https://qsl.com", | |
| 2245 | − "careers_url": "https://jobs.smartrecruiters.com/company/qsl", | |
| 2246 | − "sectors": [], | |
| 2247 | − "connector": "smartrecruiters", | |
| 2248 | − "status": "actif", | |
| 2249 | − "region": "Québec" | |
| 2250 | − }, | |
| 2251 | − { | |
| 2252 | − "id": "rcgt", | |
| 2253 | − "name": "Raymond Chabot Grant Thornton", | |
| 2254 | − "url": "https://rcgt.com", | |
| 2255 | − "careers_url": "https://rcgt.wd3.myworkdayjobs.com/External", | |
| 2256 | − "sectors": [], | |
| 2257 | − "connector": "workday", | |
| 2258 | − "status": "actif", | |
| 2259 | − "region": "Montréal" | |
| 2260 | − }, | |
| 2261 | − { | |
| 2262 | − "id": "reitmanscanadalteltd", | |
| 2263 | − "name": "Reitmans", | |
| 2264 | − "url": "", | |
| 2265 | − "careers_url": "https://jobs.smartrecruiters.com/company/ReitmansCanadaLteLtd", | |
| 2266 | − "sectors": [ | |
| 2267 | − "Commerce de détail", | |
| 2268 | − "Mode" | |
| 2269 | − ], | |
| 2270 | − "connector": "smartrecruiters", | |
| 2271 | − "status": "actif", | |
| 2272 | − "region": "Montréal, Québec, Laval" | |
| 2273 | − }, | |
| 2274 | − { | |
| 2275 | − "id": "reseau_mieux_etre", | |
| 2276 | − "name": "Réseau Mieux-Être", | |
| 2277 | − "url": "", | |
| 2278 | − "careers_url": "https://reseau-mieux-etre.breezy.hr", | |
| 2279 | − "sectors": [ | |
| 2280 | − "Santé" | |
| 2281 | − ], | |
| 2282 | − "connector": "breezy", | |
| 2283 | − "status": "actif", | |
| 2284 | − "region": "Montréal" | |
| 2285 | − }, | |
| 2286 | − { | |
| 2287 | − "id": "rethinkcanada", | |
| 2288 | − "name": "Rethink", | |
| 2289 | − "url": "", | |
| 2290 | − "careers_url": "https://rethinkcanada.bamboohr.com/careers", | |
| 2291 | − "sectors": [ | |
| 2292 | − "Publicité" | |
| 2293 | − ], | |
| 2294 | − "connector": "bamboohr", | |
| 2295 | − "status": "actif", | |
| 2296 | − "region": "Montréal" | |
| 2297 | − }, | |
| 2298 | − { | |
| 2299 | − "id": "riotinto", | |
| 2300 | − "name": "Rio Tinto", | |
| 2301 | − "url": "", | |
| 2302 | − "careers_url": "https://riotinto.wd3.myworkdayjobs.com/riotinto_careers", | |
| 2303 | − "sectors": [ | |
| 2304 | − "Mines" | |
| 2305 | − ], | |
| 2306 | − "connector": "workday", | |
| 2307 | − "status": "actif", | |
| 2308 | − "region": "Saguenay, Montréal" | |
| 2309 | − }, | |
| 2310 | − { | |
| 2311 | − "id": "robotiq", | |
| 2312 | − "name": "Robotiq", | |
| 2313 | − "url": "", | |
| 2314 | − "careers_url": "https://robotiq.bamboohr.com/careers", | |
| 2315 | − "sectors": [ | |
| 2316 | − "Robotique", | |
| 2317 | − "Manufacture" | |
| 2318 | − ], | |
| 2319 | − "connector": "bamboohr", | |
| 2320 | − "status": "actif", | |
| 2321 | − "region": "Lévis" | |
| 2322 | − }, | |
| 2323 | − { | |
| 2324 | − "id": "rodeofx", | |
| 2325 | − "name": "Rodeo FX", | |
| 2326 | − "url": "", | |
| 2327 | − "careers_url": "https://jobs.smartrecruiters.com/company/RodeoFX", | |
| 2328 | − "sectors": [ | |
| 2329 | − "Effets visuels", | |
| 2330 | − "Création" | |
| 2331 | − ], | |
| 2332 | − "connector": "smartrecruiters", | |
| 2333 | − "status": "actif", | |
| 2334 | − "region": "Montréal, Québec" | |
| 2335 | − }, | |
| 2336 | − { | |
| 2337 | − "id": "rtc_quebec", | |
| 2338 | − "name": "Réseau de transport de la Capitale", | |
| 2339 | − "url": "https://www.rtcquebec.ca", | |
| 2340 | − "careers_url": "https://rtc.njoyn.com/CGI/xweb/xweb.asp?clid=23009&page=joblisting&lang=2", | |
| 2341 | − "sectors": [ | |
| 2342 | − "Transport collectif", | |
| 2343 | − "Secteur public" | |
| 2344 | − ], | |
| 2345 | − "connector": "njoyn", | |
| 2346 | − "status": "actif", | |
| 2347 | − "region": "Québec" | |
| 2348 | − }, | |
| 2349 | − { | |
| 2350 | − "id": "samsara", | |
| 2351 | − "name": "Samsara", | |
| 2352 | − "url": "", | |
| 2353 | − "careers_url": "https://job-boards.greenhouse.io/samsara", | |
| 2354 | − "sectors": [ | |
| 2355 | − "TI", | |
| 2356 | − "IoT" | |
| 2357 | − ], | |
| 2358 | − "connector": "greenhouse", | |
| 2359 | − "status": "actif", | |
| 2360 | − "region": "Montréal" | |
| 2361 | − }, | |
| 2362 | − { | |
| 2363 | − "id": "sante_montreal", | |
| 2364 | − "name": "Santé Québec — Montréal", | |
| 2365 | − "url": "https://santemontreal.ca", | |
| 2366 | − "careers_url": "https://emplois.santemontreal.qc.ca/CL3/xweb/xweb.asp?clid=54327&page=joblisting&lang=2", | |
| 2367 | − "sectors": [ | |
| 2368 | − "Santé", | |
| 2369 | − "Services sociaux", | |
| 2370 | − "Secteur public" | |
| 2371 | − ], | |
| 2372 | − "connector": "njoyn", | |
| 2373 | − "status": "actif", | |
| 2374 | − "region": "Montréal" | |
| 2375 | − }, | |
| 2376 | − { | |
| 2377 | − "id": "sante_quebec", | |
| 2378 | − "name": "Santé Québec", | |
| 2379 | − "url": "https://sante.quebec", | |
| 2380 | − "careers_url": "https://emplois.sante.quebec", | |
| 2381 | − "sectors": [ | |
| 2382 | − "Santé", | |
| 2383 | − "Secteur public", | |
| 2384 | − "Administration" | |
| 2385 | − ], | |
| 2386 | − "connector": "digitalrecruiters", | |
| 2387 | − "status": "actif", | |
| 2388 | − "region": "Montréal, Québec" | |
| 2389 | − }, | |
| 2390 | − { | |
| 2391 | − "id": "saputo", | |
| 2392 | − "name": "Saputo", | |
| 2393 | − "url": "https://www.saputo.com", | |
| 2394 | − "careers_url": "https://saputo.wd5.myworkdayjobs.com/Saputo_External_Careers", | |
| 2395 | − "sectors": [ | |
| 2396 | − "Agroalimentaire", | |
| 2397 | − "Production" | |
| 2398 | − ], | |
| 2399 | − "connector": "workday", | |
| 2400 | − "status": "actif", | |
| 2401 | − "region": "Montréal / province" | |
| 2402 | − }, | |
| 2403 | − { | |
| 2404 | − "id": "scalia", | |
| 2405 | − "name": "Propriétés Scalia", | |
| 2406 | − "url": "", | |
| 2407 | − "careers_url": "https://scalia.bamboohr.com/careers", | |
| 2408 | − "sectors": [ | |
| 2409 | − "Immobilier" | |
| 2410 | − ], | |
| 2411 | − "connector": "bamboohr", | |
| 2412 | − "status": "actif", | |
| 2413 | − "region": "Montréal, Anjou" | |
| 2414 | − }, | |
| 2415 | − { | |
| 2416 | − "id": "scottsmiraclegro", | |
| 2417 | − "name": "Scotts Canada (Fafard)", | |
| 2418 | − "url": "https://scottsmiraclegro.com", | |
| 2419 | − "careers_url": "https://scottsmiraclegro.wd5.myworkdayjobs.com/SMGExternal", | |
| 2420 | − "sectors": [ | |
| 2421 | − "manufacturier/commerce" | |
| 2422 | − ], | |
| 2423 | − "connector": "workday", | |
| 2424 | − "status": "actif", | |
| 2425 | − "region": "" | |
| 2426 | − }, | |
| 2427 | − { | |
| 2428 | − "id": "sepaq", | |
| 2429 | − "name": "Sépaq", | |
| 2430 | − "url": "https://www.sepaq.com", | |
| 2431 | − "careers_url": "https://tre.tbe.taleo.net/tre01/ats/careers/v2/jobSearch?org=SEPAQ&cws=37", | |
| 2432 | − "connector": "taleo_tbe", | |
| 2433 | − "sectors": [ | |
| 2434 | − "Tourisme", | |
| 2435 | − "Plein air", | |
| 2436 | − "Secteur public" | |
| 2437 | − ], | |
| 2438 | − "region": "Québec (province)", | |
| 2439 | − "status": "actif" | |
| 2440 | − }, | |
| 2441 | − { | |
| 2442 | − "id": "servicenow", | |
| 2443 | − "name": "ServiceNow", | |
| 2444 | − "url": "", | |
| 2445 | − "careers_url": "https://jobs.smartrecruiters.com/company/ServiceNow", | |
| 2446 | − "sectors": [ | |
| 2447 | − "TI", | |
| 2448 | − "SaaS" | |
| 2449 | − ], | |
| 2450 | − "connector": "smartrecruiters", | |
| 2451 | − "status": "actif", | |
| 2452 | − "region": "Montréal" | |
| 2453 | − }, | |
| 2454 | − { | |
| 2455 | − "id": "siainnovationsinc", | |
| 2456 | − "name": "SIA Innovations", | |
| 2457 | − "url": "", | |
| 2458 | − "careers_url": "https://job-boards.greenhouse.io/siainnovationsinc", | |
| 2459 | − "sectors": [ | |
| 2460 | − "TI" | |
| 2461 | − ], | |
| 2462 | − "connector": "greenhouse", | |
| 2463 | − "status": "actif", | |
| 2464 | − "region": "Montréal" | |
| 2465 | − }, | |
| 2466 | − { | |
| 2467 | − "id": "sideinc", | |
| 2468 | − "name": "Side (PTW)", | |
| 2469 | − "url": "", | |
| 2470 | − "careers_url": "https://apply.workable.com/sideinc", | |
| 2471 | − "sectors": [ | |
| 2472 | − "Jeux vidéo" | |
| 2473 | − ], | |
| 2474 | − "connector": "workable", | |
| 2475 | − "status": "actif", | |
| 2476 | − "region": "Montréal, Québec" | |
| 2477 | − }, | |
| 2478 | − { | |
| 2479 | − "id": "sidlee", | |
| 2480 | − "name": "Sid Lee", | |
| 2481 | − "url": "", | |
| 2482 | − "careers_url": "https://job-boards.greenhouse.io/sidlee", | |
| 2483 | − "sectors": [ | |
| 2484 | − "Marketing", | |
| 2485 | − "Création" | |
| 2486 | − ], | |
| 2487 | − "connector": "greenhouse", | |
| 2488 | − "status": "actif", | |
| 2489 | − "region": "Montréal" | |
| 2490 | − }, | |
| 2491 | − { | |
| 2492 | − "id": "sleeman", | |
| 2493 | − "name": "Brasseries Sleeman (Unibroue)", | |
| 2494 | − "url": "https://unibroue.com", | |
| 2495 | − "careers_url": "https://sleeman.wd3.myworkdayjobs.com/SBL", | |
| 2496 | − "sectors": [ | |
| 2497 | − "manufacturier/commerce" | |
| 2498 | − ], | |
| 2499 | − "connector": "workday", | |
| 2500 | − "status": "actif", | |
| 2501 | − "region": "" | |
| 2502 | − }, | |
| 2503 | − { | |
| 2504 | − "id": "sogeclair", | |
| 2505 | − "name": "SOGECLAIR", | |
| 2506 | − "url": "", | |
| 2507 | − "careers_url": "https://apply.workable.com/sogeclair", | |
| 2508 | − "sectors": [ | |
| 2509 | − "Aéronautique", | |
| 2510 | − "Ingénierie" | |
| 2511 | − ], | |
| 2512 | − "connector": "workable", | |
| 2513 | − "status": "actif", | |
| 2514 | − "region": "Montréal, Mirabel, Laval" | |
| 2515 | − }, | |
| 2516 | − { | |
| 2517 | − "id": "sparkgrid", | |
| 2518 | − "name": "Sparkgrid", | |
| 2519 | − "url": "", | |
| 2520 | − "careers_url": "https://jobs.smartrecruiters.com/company/Sparkgrid", | |
| 2521 | − "sectors": [ | |
| 2522 | − "TI" | |
| 2523 | − ], | |
| 2524 | − "connector": "smartrecruiters", | |
| 2525 | − "status": "actif", | |
| 2526 | − "region": "Montréal" | |
| 2527 | − }, | |
| 2528 | − { | |
| 2529 | − "id": "spiria", | |
| 2530 | − "name": "Spiria", | |
| 2531 | − "url": "", | |
| 2532 | − "careers_url": "https://jobs.lever.co/spiria", | |
| 2533 | − "sectors": [ | |
| 2534 | − "TI" | |
| 2535 | − ], | |
| 2536 | − "connector": "lever", | |
| 2537 | − "status": "actif", | |
| 2538 | − "region": "Montréal, Gatineau" | |
| 2539 | − }, | |
| 2540 | − { | |
| 2541 | − "id": "spreedly", | |
| 2542 | − "name": "Spreedly", | |
| 2543 | − "url": "", | |
| 2544 | − "careers_url": "https://jobs.lever.co/spreedly", | |
| 2545 | − "sectors": [ | |
| 2546 | − "TI", | |
| 2547 | − "Fintech" | |
| 2548 | − ], | |
| 2549 | − "connector": "lever", | |
| 2550 | − "status": "actif", | |
| 2551 | − "region": "Montréal" | |
| 2552 | − }, | |
| 2553 | − { | |
| 2554 | − "id": "squeezestudio", | |
| 2555 | − "name": "Squeeze Studio Animation", | |
| 2556 | − "url": "", | |
| 2557 | − "careers_url": "https://squeezestudio.recruitee.com", | |
| 2558 | − "sectors": [ | |
| 2559 | − "Animation", | |
| 2560 | − "Création" | |
| 2561 | − ], | |
| 2562 | − "connector": "recruitee", | |
| 2563 | − "status": "actif", | |
| 2564 | − "region": "Montréal, Québec" | |
| 2565 | − }, | |
| 2566 | − { | |
| 2567 | − "id": "stelpro", | |
| 2568 | − "name": "Stelpro", | |
| 2569 | − "url": "", | |
| 2570 | − "careers_url": "https://jobs.smartrecruiters.com/company/stelpro", | |
| 2571 | − "sectors": [ | |
| 2572 | − "Production" | |
| 2573 | − ], | |
| 2574 | − "connector": "smartrecruiters", | |
| 2575 | − "status": "actif", | |
| 2576 | − "region": "Saint-Bruno-de-Montarville" | |
| 2577 | − }, | |
| 2578 | − { | |
| 2579 | − "id": "stl_laval", | |
| 2580 | − "name": "Société de transport de Laval", | |
| 2581 | − "url": "https://www.stlaval.ca", | |
| 2582 | − "careers_url": "https://lavaltransit.njoyn.com/CL2/xweb/xweb.asp?clid=60406&page=joblisting&lang=2", | |
| 2583 | − "sectors": [ | |
| 2584 | − "Transport collectif", | |
| 2585 | − "Secteur public" | |
| 2586 | − ], | |
| 2587 | − "connector": "njoyn", | |
| 2588 | − "status": "actif", | |
| 2589 | − "region": "Laval" | |
| 2590 | − }, | |
| 2591 | − { | |
| 2592 | − "id": "suncor", | |
| 2593 | − "name": "Suncor Énergie", | |
| 2594 | − "url": "https://suncor.com", | |
| 2595 | − "careers_url": "https://suncor.wd1.myworkdayjobs.com/Suncor_External", | |
| 2596 | − "sectors": [], | |
| 2597 | − "connector": "workday", | |
| 2598 | − "status": "actif", | |
| 2599 | − "region": "Montréal" | |
| 2600 | − }, | |
| 2601 | − { | |
| 2602 | − "id": "sunlife", | |
| 2603 | − "name": "Sun Life", | |
| 2604 | − "url": "", | |
| 2605 | − "careers_url": "https://sunlife.wd3.myworkdayjobs.com/Experienced-Jobs", | |
| 2606 | − "sectors": [ | |
| 2607 | − "Assurance", | |
| 2608 | − "Finance" | |
| 2609 | − ], | |
| 2610 | − "connector": "workday", | |
| 2611 | − "status": "actif", | |
| 2612 | − "region": "Montréal, Québec" | |
| 2613 | − }, | |
| 2614 | − { | |
| 2615 | − "id": "surmesur", | |
| 2616 | − "name": "Surmesur", | |
| 2617 | − "url": "", | |
| 2618 | − "careers_url": "https://surmesur.bamboohr.com/careers", | |
| 2619 | − "sectors": [ | |
| 2620 | − "Mode", | |
| 2621 | − "Commerce de détail" | |
| 2622 | − ], | |
| 2623 | − "connector": "bamboohr", | |
| 2624 | − "status": "actif", | |
| 2625 | − "region": "Québec, Laval" | |
| 2626 | − }, | |
| 2627 | − { | |
| 2628 | − "id": "sweat_pants_agency", | |
| 2629 | − "name": "Sweat Pants Agency", | |
| 2630 | − "url": "", | |
| 2631 | − "careers_url": "https://apply.workable.com/sweat-pants-agency", | |
| 2632 | − "sectors": [ | |
| 2633 | − "Marketing" | |
| 2634 | − ], | |
| 2635 | − "connector": "workable", | |
| 2636 | − "status": "actif", | |
| 2637 | − "region": "Montréal, Laval, Québec" | |
| 2638 | − }, | |
| 2639 | − { | |
| 2640 | − "id": "talan", | |
| 2641 | − "name": "Talan", | |
| 2642 | − "url": "", | |
| 2643 | − "careers_url": "https://jobs.smartrecruiters.com/company/Talan", | |
| 2644 | − "sectors": [ | |
| 2645 | − "TI", | |
| 2646 | − "Conseil" | |
| 2647 | − ], | |
| 2648 | − "connector": "smartrecruiters", | |
| 2649 | − "status": "actif", | |
| 2650 | − "region": "Montréal" | |
| 2651 | − }, | |
| 2652 | − { | |
| 2653 | − "id": "talsom", | |
| 2654 | − "name": "Talsom", | |
| 2655 | − "url": "", | |
| 2656 | − "careers_url": "https://jobs.smartrecruiters.com/company/talsom", | |
| 2657 | − "sectors": [ | |
| 2658 | − "TI" | |
| 2659 | − ], | |
| 2660 | − "connector": "smartrecruiters", | |
| 2661 | − "status": "actif", | |
| 2662 | − "region": "Montréal" | |
| 2663 | − }, | |
| 2664 | − { | |
| 2665 | − "id": "tandemlaunch", | |
| 2666 | − "name": "TandemLaunch", | |
| 2667 | − "url": "https://www.tandemlaunch.com", | |
| 2668 | − "careers_url": "https://boards.greenhouse.io/tandemlaunch", | |
| 2669 | − "sectors": [ | |
| 2670 | − "TI", | |
| 2671 | − "Deep tech" | |
| 2672 | − ], | |
| 2673 | − "connector": "greenhouse", | |
| 2674 | − "status": "actif", | |
| 2675 | − "region": "Montréal" | |
| 2676 | − }, | |
| 2677 | − { | |
| 2678 | − "id": "td", | |
| 2679 | − "name": "Groupe Banque TD", | |
| 2680 | − "url": "", | |
| 2681 | − "careers_url": "https://td.wd3.myworkdayjobs.com/TD_Bank_Careers", | |
| 2682 | − "sectors": [ | |
| 2683 | − "Finance" | |
| 2684 | − ], | |
| 2685 | − "connector": "workday", | |
| 2686 | − "status": "actif", | |
| 2687 | − "region": "Montréal, Québec" | |
| 2688 | − }, | |
| 2689 | − { | |
| 2690 | − "id": "techo_bloc", | |
| 2691 | − "name": "Techo-Bloc", | |
| 2692 | − "url": "", | |
| 2693 | − "careers_url": "https://jobs.smartrecruiters.com/company/techo-bloc", | |
| 2694 | − "sectors": [ | |
| 2695 | − "Manufacture", | |
| 2696 | − "Aménagement" | |
| 2697 | − ], | |
| 2698 | − "connector": "smartrecruiters", | |
| 2699 | − "status": "actif", | |
| 2700 | − "region": "Chambly, Saint-Hubert" | |
| 2701 | − }, | |
| 2702 | − { | |
| 2703 | − "id": "tecsys", | |
| 2704 | − "name": "Tecsys", | |
| 2705 | − "url": "", | |
| 2706 | − "careers_url": "https://apply.workable.com/tecsys", | |
| 2707 | − "sectors": [ | |
| 2708 | − "TI", | |
| 2709 | − "Logistique" | |
| 2710 | − ], | |
| 2711 | − "connector": "workable", | |
| 2712 | − "status": "actif", | |
| 2713 | − "region": "Montréal" | |
| 2714 | − }, | |
| 2715 | − { | |
| 2716 | − "id": "tehora", | |
| 2717 | − "name": "TEHORA", | |
| 2718 | − "url": "", | |
| 2719 | − "careers_url": "https://apply.workable.com/tehora", | |
| 2720 | − "sectors": [ | |
| 2721 | − "Ingénierie", | |
| 2722 | − "TI", | |
| 2723 | − "Conseil" | |
| 2724 | − ], | |
| 2725 | − "connector": "workable", | |
| 2726 | − "status": "actif", | |
| 2727 | − "region": "Montréal, Québec, Gatineau" | |
| 2728 | − }, | |
| 2729 | − { | |
| 2730 | − "id": "tetrix", | |
| 2731 | − "name": "Tetrix", | |
| 2732 | − "url": "", | |
| 2733 | − "careers_url": "https://jobs.ashbyhq.com/tetrix", | |
| 2734 | − "sectors": [ | |
| 2735 | − "TI" | |
| 2736 | − ], | |
| 2737 | − "connector": "ashby", | |
| 2738 | − "status": "actif", | |
| 2739 | − "region": "Montréal" | |
| 2740 | − }, | |
| 2741 | − { | |
| 2742 | − "id": "toonboom", | |
| 2743 | − "name": "Toon Boom Animation", | |
| 2744 | − "url": "", | |
| 2745 | − "careers_url": "https://toonboom.bamboohr.com/careers", | |
| 2746 | − "sectors": [ | |
| 2747 | − "Animation", | |
| 2748 | − "TI" | |
| 2749 | − ], | |
| 2750 | − "connector": "bamboohr", | |
| 2751 | − "status": "actif", | |
| 2752 | − "region": "Montréal" | |
| 2753 | − }, | |
| 2754 | − { | |
| 2755 | − "id": "transatat1", | |
| 2756 | − "name": "Transat A.T.", | |
| 2757 | − "url": "", | |
| 2758 | − "careers_url": "https://jobs.smartrecruiters.com/company/TransatAT1", | |
| 2759 | − "sectors": [ | |
| 2760 | − "Voyage", | |
| 2761 | − "Aérien" | |
| 2762 | − ], | |
| 2763 | − "connector": "smartrecruiters", | |
| 2764 | − "status": "actif", | |
| 2765 | − "region": "Montréal" | |
| 2766 | − }, | |
| 2767 | − { | |
| 2768 | − "id": "triotech", | |
| 2769 | − "name": "Triotech", | |
| 2770 | − "url": "", | |
| 2771 | − "careers_url": "https://triotech.bamboohr.com/careers", | |
| 2772 | − "sectors": [ | |
| 2773 | − "Divertissement", | |
| 2774 | − "Manufacture" | |
| 2775 | − ], | |
| 2776 | − "connector": "bamboohr", | |
| 2777 | − "status": "actif", | |
| 2778 | − "region": "Joliette, Montréal" | |
| 2779 | − }, | |
| 2780 | − { | |
| 2781 | − "id": "trois_brasseurs", | |
| 2782 | − "name": "3 Brasseurs Canada", | |
| 2783 | − "url": "", | |
| 2784 | − "careers_url": "https://3brasseurs.breezy.hr", | |
| 2785 | − "sectors": [ | |
| 2786 | − "Restauration" | |
| 2787 | − ], | |
| 2788 | − "connector": "breezy", | |
| 2789 | − "status": "actif", | |
| 2790 | − "region": "Montréal, Laval, Brossard" | |
| 2791 | − }, | |
| 2792 | − { | |
| 2793 | − "id": "tsmg", | |
| 2794 | − "name": "TSMG", | |
| 2795 | − "url": "", | |
| 2796 | − "careers_url": "https://jobs.lever.co/tsmg", | |
| 2797 | − "sectors": [ | |
| 2798 | − "Placement", | |
| 2799 | − "Télécoms" | |
| 2800 | − ], | |
| 2801 | − "connector": "lever", | |
| 2802 | − "status": "actif", | |
| 2803 | − "region": "Montréal, Québec" | |
| 2804 | − }, | |
| 2805 | − { | |
| 2806 | − "id": "ubisoft", | |
| 2807 | − "name": "Ubisoft", | |
| 2808 | − "url": "https://www.ubisoft.com", | |
| 2809 | − "careers_url": "https://jobs.smartrecruiters.com/company/Ubisoft2", | |
| 2810 | − "sectors": [ | |
| 2811 | − "Jeux vidéo", | |
| 2812 | − "TI", | |
| 2813 | − "Création" | |
| 2814 | − ], | |
| 2815 | − "connector": "smartrecruiters", | |
| 2816 | − "status": "actif", | |
| 2817 | − "region": "Montréal / Québec / Sherbrooke" | |
| 2818 | − }, | |
| 2819 | − { | |
| 2820 | − "id": "unit8", | |
| 2821 | − "name": "Unit8", | |
| 2822 | − "url": "", | |
| 2823 | − "careers_url": "https://apply.workable.com/unit8", | |
| 2824 | − "sectors": [ | |
| 2825 | − "TI", | |
| 2826 | − "Données" | |
| 2827 | − ], | |
| 2828 | − "connector": "workable", | |
| 2829 | − "status": "actif", | |
| 2830 | − "region": "Montréal" | |
| 2831 | − }, | |
| 2832 | − { | |
| 2833 | − "id": "usmobile", | |
| 2834 | − "name": "US Mobile", | |
| 2835 | − "url": "", | |
| 2836 | − "careers_url": "https://jobs.lever.co/USMobile", | |
| 2837 | − "sectors": [ | |
| 2838 | − "Télécoms" | |
| 2839 | − ], | |
| 2840 | − "connector": "lever", | |
| 2841 | − "status": "actif", | |
| 2842 | − "region": "Montréal" | |
| 2843 | − }, | |
| 2844 | − { | |
| 2845 | − "id": "vaco", | |
| 2846 | − "name": "Vaco", | |
| 2847 | − "url": "", | |
| 2848 | − "careers_url": "https://job-boards.greenhouse.io/vaco", | |
| 2849 | − "sectors": [ | |
| 2850 | − "Placement", | |
| 2851 | − "Conseil" | |
| 2852 | − ], | |
| 2853 | − "connector": "greenhouse", | |
| 2854 | − "status": "actif", | |
| 2855 | − "region": "Montréal" | |
| 2856 | − }, | |
| 2857 | − { | |
| 2858 | − "id": "valsoft_corp", | |
| 2859 | − "name": "Valsoft", | |
| 2860 | − "url": "", | |
| 2861 | − "careers_url": "https://apply.workable.com/valsoft-corp", | |
| 2862 | − "sectors": [ | |
| 2863 | − "TI", | |
| 2864 | − "Logiciel" | |
| 2865 | − ], | |
| 2866 | − "connector": "workable", | |
| 2867 | − "status": "actif", | |
| 2868 | − "region": "Montréal" | |
| 2869 | − }, | |
| 2870 | − { | |
| 2871 | − "id": "valtech", | |
| 2872 | − "name": "Valtech", | |
| 2873 | − "url": "", | |
| 2874 | − "careers_url": "https://job-boards.greenhouse.io/valtech", | |
| 2875 | − "sectors": [ | |
| 2876 | − "TI" | |
| 2877 | − ], | |
| 2878 | − "connector": "greenhouse", | |
| 2879 | − "status": "actif", | |
| 2880 | − "region": "Montréal" | |
| 2881 | − }, | |
| 2882 | − { | |
| 2883 | − "id": "vaporus_inc", | |
| 2884 | − "name": "Vaporus", | |
| 2885 | − "url": "", | |
| 2886 | − "careers_url": "https://vaporus-inc.breezy.hr", | |
| 2887 | − "sectors": [ | |
| 2888 | − "Commerce de détail" | |
| 2889 | − ], | |
| 2890 | − "connector": "breezy", | |
| 2891 | − "status": "actif", | |
| 2892 | − "region": "Montréal" | |
| 2893 | − }, | |
| 2894 | − { | |
| 2895 | − "id": "vasco", | |
| 2896 | − "name": "Vasco", | |
| 2897 | − "url": "", | |
| 2898 | − "careers_url": "https://jobs.ashbyhq.com/vasco", | |
| 2899 | − "sectors": [ | |
| 2900 | − "TI" | |
| 2901 | − ], | |
| 2902 | − "connector": "ashby", | |
| 2903 | − "status": "actif", | |
| 2904 | − "region": "Montréal" | |
| 2905 | − }, | |
| 2906 | − { | |
| 2907 | − "id": "venturemedia", | |
| 2908 | − "name": "Venture Media", | |
| 2909 | − "url": "", | |
| 2910 | − "careers_url": "https://jobs.smartrecruiters.com/company/VentureMedia", | |
| 2911 | − "sectors": [ | |
| 2912 | − "Médias" | |
| 2913 | − ], | |
| 2914 | − "connector": "smartrecruiters", | |
| 2915 | − "status": "actif", | |
| 2916 | − "region": "Montréal" | |
| 2917 | − }, | |
| 2918 | − { | |
| 2919 | − "id": "vicpark", | |
| 2920 | − "name": "Victoria Park Medispa", | |
| 2921 | − "url": "", | |
| 2922 | − "careers_url": "https://vicpark.bamboohr.com/careers", | |
| 2923 | − "sectors": [ | |
| 2924 | − "Santé", | |
| 2925 | − "Esthétique" | |
| 2926 | − ], | |
| 2927 | − "connector": "bamboohr", | |
| 2928 | − "status": "actif", | |
| 2929 | − "region": "Montréal, Gatineau, Granby" | |
| 2930 | − }, | |
| 2931 | − { | |
| 2932 | − "id": "videotron", | |
| 2933 | − "name": "Vidéotron", | |
| 2934 | − "url": "https://videotron.com", | |
| 2935 | − "careers_url": "https://jobs.smartrecruiters.com/company/videotron", | |
| 2936 | − "sectors": [], | |
| 2937 | − "connector": "smartrecruiters", | |
| 2938 | − "status": "actif", | |
| 2939 | − "region": "Montréal" | |
| 2940 | − }, | |
| 2941 | − { | |
| 2942 | − "id": "ville_gatineau", | |
| 2943 | − "name": "Ville de Gatineau", | |
| 2944 | − "url": "https://www.gatineau.ca", | |
| 2945 | − "careers_url": "https://gatineau.njoyn.com/CL2/xweb/xweb.asp?clid=27082&page=joblisting&lang=2", | |
| 2946 | − "sectors": [ | |
| 2947 | − "Municipal", | |
| 2948 | − "Secteur public" | |
| 2949 | − ], | |
| 2950 | − "connector": "njoyn", | |
| 2951 | − "status": "actif", | |
| 2952 | − "region": "Gatineau" | |
| 2953 | − }, | |
| 2954 | − { | |
| 2955 | − "id": "ville_terrebonne", | |
| 2956 | − "name": "Ville de Terrebonne", | |
| 2957 | − "url": "https://www.ville.terrebonne.qc.ca", | |
| 2958 | − "careers_url": "https://clients.njoyn.com/cl4/xweb/xweb.asp?clid=71764&page=joblisting&lang=2", | |
| 2959 | − "sectors": [ | |
| 2960 | − "Municipal", | |
| 2961 | − "Secteur public" | |
| 2962 | − ], | |
| 2963 | − "connector": "njoyn", | |
| 2964 | − "status": "actif", | |
| 2965 | − "region": "Terrebonne" | |
| 2966 | − }, | |
| 2967 | − { | |
| 2968 | − "id": "vmlcanadaen", | |
| 2969 | − "name": "VML Canada", | |
| 2970 | − "url": "", | |
| 2971 | − "careers_url": "https://job-boards.greenhouse.io/vmlcanadaen", | |
| 2972 | − "sectors": [ | |
| 2973 | − "Publicité" | |
| 2974 | − ], | |
| 2975 | − "connector": "greenhouse", | |
| 2976 | − "status": "actif", | |
| 2977 | − "region": "Montréal" | |
| 2978 | − }, | |
| 2979 | − { | |
| 2980 | − "id": "vo2_group", | |
| 2981 | − "name": "VO2 Group", | |
| 2982 | − "url": "", | |
| 2983 | − "careers_url": "https://jobs.lever.co/vo2-group", | |
| 2984 | − "sectors": [ | |
| 2985 | − "TI", | |
| 2986 | − "Conseil" | |
| 2987 | − ], | |
| 2988 | − "connector": "lever", | |
| 2989 | − "status": "actif", | |
| 2990 | − "region": "Montréal" | |
| 2991 | − }, | |
| 2992 | − { | |
| 2993 | − "id": "vooban", | |
| 2994 | − "name": "Vooban", | |
| 2995 | − "url": "", | |
| 2996 | − "careers_url": "https://job-boards.greenhouse.io/vooban", | |
| 2997 | − "sectors": [ | |
| 2998 | − "TI" | |
| 2999 | − ], | |
| 3000 | − "connector": "greenhouse", | |
| 3001 | − "status": "actif", | |
| 3002 | − "region": "Québec" | |
| 3003 | − }, | |
| 3004 | − { | |
| 3005 | − "id": "vosker", | |
| 3006 | − "name": "Vosker", | |
| 3007 | − "url": "", | |
| 3008 | − "careers_url": "https://jobs.smartrecruiters.com/company/vosker", | |
| 3009 | − "sectors": [ | |
| 3010 | − "TI", | |
| 3011 | − "Production" | |
| 3012 | − ], | |
| 3013 | − "connector": "smartrecruiters", | |
| 3014 | − "status": "actif", | |
| 3015 | − "region": "Victoriaville" | |
| 3016 | − }, | |
| 3017 | − { | |
| 3018 | − "id": "voxdata", | |
| 3019 | − "name": "VOXDATA", | |
| 3020 | − "url": "", | |
| 3021 | − "careers_url": "https://voxdata.breezy.hr", | |
| 3022 | − "sectors": [ | |
| 3023 | − "Centre d'appels" | |
| 3024 | − ], | |
| 3025 | − "connector": "breezy", | |
| 3026 | − "status": "actif", | |
| 3027 | − "region": "Montréal" | |
| 3028 | − }, | |
| 3029 | − { | |
| 3030 | − "id": "walmart", | |
| 3031 | − "name": "Walmart Canada", | |
| 3032 | − "url": "https://walmart.ca", | |
| 3033 | − "careers_url": "https://walmart.wd504.myworkdayjobs.com/WalmartExternal", | |
| 3034 | − "sectors": [], | |
| 3035 | − "connector": "workday", | |
| 3036 | − "status": "actif", | |
| 3037 | − "region": "Montréal" | |
| 3038 | − }, | |
| 3039 | − { | |
| 3040 | − "id": "xplornet", | |
| 3041 | − "name": "Xplornet", | |
| 3042 | − "url": "", | |
| 3043 | − "careers_url": "https://jobs.smartrecruiters.com/company/XPLORNET", | |
| 3044 | − "sectors": [ | |
| 3045 | − "Télécoms" | |
| 3046 | − ], | |
| 3047 | − "connector": "smartrecruiters", | |
| 3048 | − "status": "actif", | |
| 3049 | − "region": "Montréal" | |
| 3050 | − }, | |
| 3051 | − { | |
| 3052 | − "id": "xsolla", | |
| 3053 | − "name": "Xsolla", | |
| 3054 | − "url": "", | |
| 3055 | − "careers_url": "https://jobs.lever.co/xsolla", | |
| 3056 | − "sectors": [ | |
| 3057 | − "TI", | |
| 3058 | − "Jeux vidéo" | |
| 3059 | − ], | |
| 3060 | − "connector": "lever", | |
| 3061 | − "status": "actif", | |
| 3062 | − "region": "Montréal" | |
| 3063 | − }, | |
| 3064 | − { | |
| 3065 | − "id": "youset", | |
| 3066 | − "name": "YouSet", | |
| 3067 | − "url": "", | |
| 3068 | − "careers_url": "https://youset.breezy.hr", | |
| 3069 | − "sectors": [ | |
| 3070 | − "Assurance", | |
| 3071 | − "TI" | |
| 3072 | − ], | |
| 3073 | − "connector": "breezy", | |
| 3074 | − "status": "actif", | |
| 3075 | − "region": "Montréal" | |
| 3076 | − }, | |
| 3077 | − { | |
| 3078 | − "id": "ziptrekeco", | |
| 3079 | − "name": "Ziptrek Tremblant", | |
| 3080 | − "url": "https://tremblant.ziptrek.com", | |
| 3081 | − "careers_url": "https://ziptrekeco.bamboohr.com/careers", | |
| 3082 | − "sectors": [ | |
| 3083 | − "manufacturier/commerce" | |
| 3084 | − ], | |
| 3085 | − "connector": "bamboohr", | |
| 3086 | − "status": "actif", | |
| 3087 | − "region": "" | |
| 3088 | − } | |
| 3089 | − ] | |
| 2 | + "_meta": { | |
| 3 | + "project": "Job·Ka — Groupe KA", | |
| 4 | + "author": "Simon-Pierre Boucher <contact@spboucher.ai>", | |
| 5 | + "role": "Registre descriptif des sources (alimente la page Sources)", | |
| 6 | + "updated": "2026-08-22", | |
| 7 | + "counts": { | |
| 8 | + "employeurs_directs": 350, | |
| 9 | + "plateformes_ats": 20, | |
| 10 | + "portails": 3, | |
| 11 | + "depot_direct": 1, | |
| 12 | + "reseaux_multi_employeurs": 1 | |
| 13 | + }, | |
| 14 | + "ats": [ | |
| 15 | + "adp", | |
| 16 | + "ashby", | |
| 17 | + "bamboohr", | |
| 18 | + "breezy", | |
| 19 | + "dayforce", | |
| 20 | + "digitalrecruiters", | |
| 21 | + "greenhouse", | |
| 22 | + "icims", | |
| 23 | + "lever", | |
| 24 | + "njoyn", | |
| 25 | + "recruitee", | |
| 26 | + "smartrecruiters", | |
| 27 | + "successfactors", | |
| 28 | + "taleo", | |
| 29 | + "taleo_tbe", | |
| 30 | + "ultipro", | |
| 31 | + "workable", | |
| 32 | + "workday", | |
| 33 | + "workland", | |
| 34 | + "wpjobmanager" | |
| 35 | + ], | |
| 36 | + "docs": "docs/connecteurs/INDEX.md (fiches générées par scripts/gen_connector_docs.py) ; conformité : docs/CONFORMITE.md" | |
| 37 | + }, | |
| 38 | + "sources": [ | |
| 39 | + { | |
| 40 | + "id": "adeleexpressfr", | |
| 41 | + "name": "Adèle Express", | |
| 42 | + "url": "", | |
| 43 | + "careers_url": "https://adeleexpressfr.recruitee.com", | |
| 44 | + "sectors": [ | |
| 45 | + "Transport" | |
| 46 | + ], | |
| 47 | + "connector": "recruitee", | |
| 48 | + "status": "actif", | |
| 49 | + "region": "Montréal" | |
| 50 | + }, | |
| 51 | + { | |
| 52 | + "id": "adi_albert_davidson_industries", | |
| 53 | + "name": "ADI - Albert Davidson Industries", | |
| 54 | + "url": "", | |
| 55 | + "careers_url": "https://adi-albert-davidson-industries.breezy.hr", | |
| 56 | + "sectors": [ | |
| 57 | + "Manufacture" | |
| 58 | + ], | |
| 59 | + "connector": "breezy", | |
| 60 | + "status": "actif", | |
| 61 | + "region": "Pointe-Claire" | |
| 62 | + }, | |
| 63 | + { | |
| 64 | + "id": "agnico_eagle", | |
| 65 | + "name": "Agnico Eagle Mines", | |
| 66 | + "url": "https://www.agnicoeagle.com", | |
| 67 | + "careers_url": "https://agnicoeagle.taleo.net/careersection/2/jobsearch.ftl?lang=fr", | |
| 68 | + "sectors": [ | |
| 69 | + "Mines", | |
| 70 | + "Ingénierie", | |
| 71 | + "Métiers spécialisés" | |
| 72 | + ], | |
| 73 | + "connector": "taleo", | |
| 74 | + "status": "actif", | |
| 75 | + "region": "Abitibi-Témiscamingue, Malartic, Rouyn-Noranda" | |
| 76 | + }, | |
| 77 | + { | |
| 78 | + "id": "agropur", | |
| 79 | + "name": "Agropur", | |
| 80 | + "url": "https://www.agropur.com", | |
| 81 | + "careers_url": "https://agropur.wd3.myworkdayjobs.com/Agropur_Careers", | |
| 82 | + "sectors": [ | |
| 83 | + "Agroalimentaire", | |
| 84 | + "Production" | |
| 85 | + ], | |
| 86 | + "connector": "workday", | |
| 87 | + "status": "actif", | |
| 88 | + "region": "Longueuil / province" | |
| 89 | + }, | |
| 90 | + { | |
| 91 | + "id": "airbus", | |
| 92 | + "name": "Airbus Canada", | |
| 93 | + "url": "https://airbus.com", | |
| 94 | + "careers_url": "https://ag.wd3.myworkdayjobs.com/Airbus", | |
| 95 | + "sectors": [], | |
| 96 | + "connector": "workday", | |
| 97 | + "status": "actif", | |
| 98 | + "region": "Mirabel" | |
| 99 | + }, | |
| 100 | + { | |
| 101 | + "id": "ajwalter", | |
| 102 | + "name": "AJ Walter Aviation", | |
| 103 | + "url": "", | |
| 104 | + "careers_url": "https://ajwalter.recruitee.com", | |
| 105 | + "sectors": [ | |
| 106 | + "Aéronautique" | |
| 107 | + ], | |
| 108 | + "connector": "recruitee", | |
| 109 | + "status": "actif", | |
| 110 | + "region": "Montréal" | |
| 111 | + }, | |
| 112 | + { | |
| 113 | + "id": "alayacare", | |
| 114 | + "name": "AlayaCare", | |
| 115 | + "url": "https://www.alayacare.com", | |
| 116 | + "careers_url": "https://job-boards.greenhouse.io/alayacare", | |
| 117 | + "sectors": [ | |
| 118 | + "TI", | |
| 119 | + "Santé" | |
| 120 | + ], | |
| 121 | + "connector": "greenhouse", | |
| 122 | + "status": "actif", | |
| 123 | + "region": "Montréal" | |
| 124 | + }, | |
| 125 | + { | |
| 126 | + "id": "alcoa", | |
| 127 | + "name": "Alcoa Canada", | |
| 128 | + "url": "https://alcoa.com", | |
| 129 | + "careers_url": "https://alcoa.wd5.myworkdayjobs.com/Careers", | |
| 130 | + "sectors": [], | |
| 131 | + "connector": "workday", | |
| 132 | + "status": "actif", | |
| 133 | + "region": "Baie-Comeau" | |
| 134 | + }, | |
| 135 | + { | |
| 136 | + "id": "alimentiv_2", | |
| 137 | + "name": "Alimentiv", | |
| 138 | + "url": "", | |
| 139 | + "careers_url": "https://jobs.lever.co/alimentiv-2", | |
| 140 | + "sectors": [ | |
| 141 | + "Recherche clinique" | |
| 142 | + ], | |
| 143 | + "connector": "lever", | |
| 144 | + "status": "actif", | |
| 145 | + "region": "Montréal, Québec" | |
| 146 | + }, | |
| 147 | + { | |
| 148 | + "id": "alphanumeric_systems", | |
| 149 | + "name": "Alphanumeric Systems", | |
| 150 | + "url": "", | |
| 151 | + "careers_url": "https://alphanumeric-systems.breezy.hr", | |
| 152 | + "sectors": [ | |
| 153 | + "TI", | |
| 154 | + "Santé" | |
| 155 | + ], | |
| 156 | + "connector": "breezy", | |
| 157 | + "status": "actif", | |
| 158 | + "region": "Montréal, Sainte-Foy" | |
| 159 | + }, | |
| 160 | + { | |
| 161 | + "id": "altasciences", | |
| 162 | + "name": "Altasciences", | |
| 163 | + "url": "", | |
| 164 | + "careers_url": "https://altasciences.wd1.myworkdayjobs.com/Careers", | |
| 165 | + "sectors": [ | |
| 166 | + "Pharmaceutique" | |
| 167 | + ], | |
| 168 | + "connector": "workday", | |
| 169 | + "status": "actif", | |
| 170 | + "region": "Laval" | |
| 171 | + }, | |
| 172 | + { | |
| 173 | + "id": "amilia", | |
| 174 | + "name": "Amilia", | |
| 175 | + "url": "", | |
| 176 | + "careers_url": "https://amilia.recruitee.com", | |
| 177 | + "sectors": [ | |
| 178 | + "TI" | |
| 179 | + ], | |
| 180 | + "connector": "recruitee", | |
| 181 | + "status": "actif", | |
| 182 | + "region": "Montréal" | |
| 183 | + }, | |
| 184 | + { | |
| 185 | + "id": "anciapersonnelinc", | |
| 186 | + "name": "ANCIA Personnel", | |
| 187 | + "url": "", | |
| 188 | + "careers_url": "https://anciapersonnelinc.recruitee.com", | |
| 189 | + "sectors": [ | |
| 190 | + "Placement" | |
| 191 | + ], | |
| 192 | + "connector": "recruitee", | |
| 193 | + "status": "actif", | |
| 194 | + "region": "Lévis, Québec, Montréal" | |
| 195 | + }, | |
| 196 | + { | |
| 197 | + "id": "appdirect", | |
| 198 | + "name": "AppDirect", | |
| 199 | + "url": "", | |
| 200 | + "careers_url": "https://job-boards.greenhouse.io/appdirect", | |
| 201 | + "sectors": [ | |
| 202 | + "TI", | |
| 203 | + "SaaS" | |
| 204 | + ], | |
| 205 | + "connector": "greenhouse", | |
| 206 | + "status": "actif", | |
| 207 | + "region": "Montréal" | |
| 208 | + }, | |
| 209 | + { | |
| 210 | + "id": "astucemedia", | |
| 211 | + "name": "Astucemedia", | |
| 212 | + "url": "", | |
| 213 | + "careers_url": "https://jobs.smartrecruiters.com/company/Astucemedia", | |
| 214 | + "sectors": [ | |
| 215 | + "Médias", | |
| 216 | + "TI" | |
| 217 | + ], | |
| 218 | + "connector": "smartrecruiters", | |
| 219 | + "status": "actif", | |
| 220 | + "region": "Montréal" | |
| 221 | + }, | |
| 222 | + { | |
| 223 | + "id": "atecna_montreal", | |
| 224 | + "name": "Atecna", | |
| 225 | + "url": "", | |
| 226 | + "careers_url": "https://apply.workable.com/atecna-montreal", | |
| 227 | + "sectors": [ | |
| 228 | + "TI", | |
| 229 | + "Conseil" | |
| 230 | + ], | |
| 231 | + "connector": "workable", | |
| 232 | + "status": "actif", | |
| 233 | + "region": "Montréal" | |
| 234 | + }, | |
| 235 | + { | |
| 236 | + "id": "atlas_workland", | |
| 237 | + "name": "Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)", | |
| 238 | + "url": "https://www.workland.com", | |
| 239 | + "careers_url": "https://atlas.workland.com", | |
| 240 | + "connector": "workland", | |
| 241 | + "sectors": [ | |
| 242 | + "Éducation", | |
| 243 | + "Santé", | |
| 244 | + "Secteur public", | |
| 245 | + "Multi-employeurs" | |
| 246 | + ], | |
| 247 | + "region": "Québec (province)", | |
| 248 | + "status": "actif" | |
| 249 | + }, | |
| 250 | + { | |
| 251 | + "id": "autodesk", | |
| 252 | + "name": "Autodesk", | |
| 253 | + "url": "", | |
| 254 | + "careers_url": "https://autodesk.wd1.myworkdayjobs.com/Ext", | |
| 255 | + "sectors": [ | |
| 256 | + "TI", | |
| 257 | + "Logiciel" | |
| 258 | + ], | |
| 259 | + "connector": "workday", | |
| 260 | + "status": "actif", | |
| 261 | + "region": "Montréal" | |
| 262 | + }, | |
| 263 | + { | |
| 264 | + "id": "aviyatech", | |
| 265 | + "name": "Aviya Aerospace Systems", | |
| 266 | + "url": "", | |
| 267 | + "careers_url": "https://jobs.lever.co/aviyatech", | |
| 268 | + "sectors": [ | |
| 269 | + "Aéronautique" | |
| 270 | + ], | |
| 271 | + "connector": "lever", | |
| 272 | + "status": "actif", | |
| 273 | + "region": "Longueuil" | |
| 274 | + }, | |
| 275 | + { | |
| 276 | + "id": "bardel_entertainment", | |
| 277 | + "name": "Bardel Entertainment", | |
| 278 | + "url": "", | |
| 279 | + "careers_url": "https://apply.workable.com/bardel-entertainment", | |
| 280 | + "sectors": [ | |
| 281 | + "Animation" | |
| 282 | + ], | |
| 283 | + "connector": "workable", | |
| 284 | + "status": "actif", | |
| 285 | + "region": "Montréal" | |
| 286 | + }, | |
| 287 | + { | |
| 288 | + "id": "bayshore", | |
| 289 | + "name": "Bayshore HealthCare", | |
| 290 | + "url": "https://www.bayshore.ca", | |
| 291 | + "careers_url": "https://bayshore.taleo.net/careersection/bs_ex/jobsearch.ftl?lang=fr", | |
| 292 | + "sectors": [ | |
| 293 | + "Santé", | |
| 294 | + "Soins à domicile" | |
| 295 | + ], | |
| 296 | + "connector": "taleo", | |
| 297 | + "status": "actif", | |
| 298 | + "region": "Montréal, Québec" | |
| 299 | + }, | |
| 300 | + { | |
| 301 | + "id": "bc2", | |
| 302 | + "name": "Groupe BC2", | |
| 303 | + "url": "", | |
| 304 | + "careers_url": "https://bc2.bamboohr.com/careers", | |
| 305 | + "sectors": [ | |
| 306 | + "Urbanisme", | |
| 307 | + "Conseil" | |
| 308 | + ], | |
| 309 | + "connector": "bamboohr", | |
| 310 | + "status": "actif", | |
| 311 | + "region": "Montréal" | |
| 312 | + }, | |
| 313 | + { | |
| 314 | + "id": "bdc", | |
| 315 | + "name": "BDC", | |
| 316 | + "url": "", | |
| 317 | + "careers_url": "https://bdc.wd10.myworkdayjobs.com/bdc_careers", | |
| 318 | + "sectors": [ | |
| 319 | + "Finance" | |
| 320 | + ], | |
| 321 | + "connector": "workday", | |
| 322 | + "status": "actif", | |
| 323 | + "region": "Montréal" | |
| 324 | + }, | |
| 325 | + { | |
| 326 | + "id": "bell_textron", | |
| 327 | + "name": "Bell Textron Canada", | |
| 328 | + "url": "https://www.bellflight.com", | |
| 329 | + "careers_url": "https://textron.taleo.net/careersection/bell/jobsearch.ftl?lang=fr", | |
| 330 | + "sectors": [ | |
| 331 | + "Aéronautique", | |
| 332 | + "Fabrication" | |
| 333 | + ], | |
| 334 | + "connector": "taleo", | |
| 335 | + "status": "actif", | |
| 336 | + "region": "Mirabel" | |
| 337 | + }, | |
| 338 | + { | |
| 339 | + "id": "beneva", | |
| 340 | + "name": "Beneva", | |
| 341 | + "url": "https://beneva.ca", | |
| 342 | + "careers_url": "https://beneva.wd10.myworkdayjobs.com/BenevaSite_carriere", | |
| 343 | + "sectors": [], | |
| 344 | + "connector": "workday", | |
| 345 | + "status": "actif", | |
| 346 | + "region": "Québec" | |
| 347 | + }, | |
| 348 | + { | |
| 349 | + "id": "bento_sushi", | |
| 350 | + "name": "Bento Sushi", | |
| 351 | + "url": "https://www.bentosushi.com", | |
| 352 | + "careers_url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=d0dfb14c-f365-4599-b39b-0fdccb3d1160&ccId=19000101_000001&lang=fr_CA", | |
| 353 | + "connector": "adp", | |
| 354 | + "sectors": [ | |
| 355 | + "Restauration" | |
| 356 | + ], | |
| 357 | + "region": "Québec (province)", | |
| 358 | + "status": "actif" | |
| 359 | + }, | |
| 360 | + { | |
| 361 | + "id": "bhvr", | |
| 362 | + "name": "Behaviour Interactif", | |
| 363 | + "url": "", | |
| 364 | + "careers_url": "https://jobs.lever.co/bhvr", | |
| 365 | + "sectors": [ | |
| 366 | + "Jeux vidéo" | |
| 367 | + ], | |
| 368 | + "connector": "lever", | |
| 369 | + "status": "actif", | |
| 370 | + "region": "Montréal" | |
| 371 | + }, | |
| 372 | + { | |
| 373 | + "id": "bigbang", | |
| 374 | + "name": "Big Bang", | |
| 375 | + "url": "", | |
| 376 | + "careers_url": "https://bigbang.bamboohr.com/careers", | |
| 377 | + "sectors": [ | |
| 378 | + "TI" | |
| 379 | + ], | |
| 380 | + "connector": "bamboohr", | |
| 381 | + "status": "actif", | |
| 382 | + "region": "Montréal" | |
| 383 | + }, | |
| 384 | + { | |
| 385 | + "id": "biximontreal", | |
| 386 | + "name": "BIXI Montréal", | |
| 387 | + "url": "", | |
| 388 | + "careers_url": "https://biximontreal.recruitee.com", | |
| 389 | + "sectors": [ | |
| 390 | + "Transport" | |
| 391 | + ], | |
| 392 | + "connector": "recruitee", | |
| 393 | + "status": "actif", | |
| 394 | + "region": "Montréal" | |
| 395 | + }, | |
| 396 | + { | |
| 397 | + "id": "bmo", | |
| 398 | + "name": "BMO Groupe financier", | |
| 399 | + "url": "", | |
| 400 | + "careers_url": "https://bmo.wd3.myworkdayjobs.com/External", | |
| 401 | + "sectors": [ | |
| 402 | + "Finance" | |
| 403 | + ], | |
| 404 | + "connector": "workday", | |
| 405 | + "status": "actif", | |
| 406 | + "region": "Montréal, Laval, Gatineau" | |
| 407 | + }, | |
| 408 | + { | |
| 409 | + "id": "bombardier", | |
| 410 | + "name": "Bombardier", | |
| 411 | + "url": "https://bombardier.com", | |
| 412 | + "careers_url": "https://jobs.bombardier.com", | |
| 413 | + "sectors": [ | |
| 414 | + "Aéronautique", | |
| 415 | + "Ingénierie", | |
| 416 | + "Fabrication" | |
| 417 | + ], | |
| 418 | + "connector": "successfactors", | |
| 419 | + "status": "actif", | |
| 420 | + "region": "Dorval, Mirabel, Montréal" | |
| 421 | + }, | |
| 422 | + { | |
| 423 | + "id": "botpress", | |
| 424 | + "name": "Botpress", | |
| 425 | + "url": "", | |
| 426 | + "careers_url": "https://apply.workable.com/botpress", | |
| 427 | + "sectors": [ | |
| 428 | + "TI", | |
| 429 | + "IA" | |
| 430 | + ], | |
| 431 | + "connector": "workable", | |
| 432 | + "status": "actif", | |
| 433 | + "region": "Montréal, Québec" | |
| 434 | + }, | |
| 435 | + { | |
| 436 | + "id": "brandmomentum", | |
| 437 | + "name": "Brand Momentum", | |
| 438 | + "url": "", | |
| 439 | + "careers_url": "https://brandmomentum.breezy.hr", | |
| 440 | + "sectors": [ | |
| 441 | + "Marketing", | |
| 442 | + "Ventes" | |
| 443 | + ], | |
| 444 | + "connector": "breezy", | |
| 445 | + "status": "actif", | |
| 446 | + "region": "Montréal, Laval, Québec" | |
| 447 | + }, | |
| 448 | + { | |
| 449 | + "id": "broadsign", | |
| 450 | + "name": "Broadsign", | |
| 451 | + "url": "", | |
| 452 | + "careers_url": "https://job-boards.greenhouse.io/broadsign", | |
| 453 | + "sectors": [ | |
| 454 | + "TI", | |
| 455 | + "Affichage" | |
| 456 | + ], | |
| 457 | + "connector": "greenhouse", | |
| 458 | + "status": "actif", | |
| 459 | + "region": "Montréal" | |
| 460 | + }, | |
| 461 | + { | |
| 462 | + "id": "broccolini", | |
| 463 | + "name": "Broccolini", | |
| 464 | + "url": "", | |
| 465 | + "careers_url": "https://broccolini.bamboohr.com/careers", | |
| 466 | + "sectors": [ | |
| 467 | + "Construction", | |
| 468 | + "Immobilier" | |
| 469 | + ], | |
| 470 | + "connector": "bamboohr", | |
| 471 | + "status": "actif", | |
| 472 | + "region": "Montréal" | |
| 473 | + }, | |
| 474 | + { | |
| 475 | + "id": "caaquebec", | |
| 476 | + "name": "CAA-Québec", | |
| 477 | + "url": "https://caaquebec.com", | |
| 478 | + "careers_url": "https://caaquebec.wd3.myworkdayjobs.com/CarrieresCAA-Quebec", | |
| 479 | + "sectors": [], | |
| 480 | + "connector": "workday", | |
| 481 | + "status": "actif", | |
| 482 | + "region": "Québec" | |
| 483 | + }, | |
| 484 | + { | |
| 485 | + "id": "cae", | |
| 486 | + "name": "CAE", | |
| 487 | + "url": "https://www.cae.com", | |
| 488 | + "careers_url": "https://cae.wd3.myworkdayjobs.com/career", | |
| 489 | + "sectors": [ | |
| 490 | + "Aéronautique", | |
| 491 | + "Simulation", | |
| 492 | + "TI" | |
| 493 | + ], | |
| 494 | + "connector": "workday", | |
| 495 | + "status": "actif", | |
| 496 | + "region": "Montréal" | |
| 497 | + }, | |
| 498 | + { | |
| 499 | + "id": "canada_global", | |
| 500 | + "name": "Canada Global Recruitment", | |
| 501 | + "url": "", | |
| 502 | + "careers_url": "https://canada-global.breezy.hr", | |
| 503 | + "sectors": [ | |
| 504 | + "Placement" | |
| 505 | + ], | |
| 506 | + "connector": "breezy", | |
| 507 | + "status": "actif", | |
| 508 | + "region": "Montréal" | |
| 509 | + }, | |
| 510 | + { | |
| 511 | + "id": "canadiantirecorporation", | |
| 512 | + "name": "Canadian Tire", | |
| 513 | + "url": "https://canadiantire.ca", | |
| 514 | + "careers_url": "https://canadiantirecorporation.wd3.myworkdayjobs.com/Enterprise_External_Careers_Site", | |
| 515 | + "sectors": [], | |
| 516 | + "connector": "workday", | |
| 517 | + "status": "actif", | |
| 518 | + "region": "Montréal" | |
| 519 | + }, | |
| 520 | + { | |
| 521 | + "id": "capreit", | |
| 522 | + "name": "CAPREIT", | |
| 523 | + "url": "https://www.capreit.ca", | |
| 524 | + "careers_url": "https://careers-capreit.icims.com/jobs/search?ss=1", | |
| 525 | + "sectors": [ | |
| 526 | + "Immobilier", | |
| 527 | + "Gestion immobilière" | |
| 528 | + ], | |
| 529 | + "connector": "icims", | |
| 530 | + "status": "actif", | |
| 531 | + "region": "Montréal" | |
| 532 | + }, | |
| 533 | + { | |
| 534 | + "id": "cascades", | |
| 535 | + "name": "Cascades", | |
| 536 | + "url": "https://www.cascades.com", | |
| 537 | + "careers_url": "https://jobs.cascades.com", | |
| 538 | + "sectors": [ | |
| 539 | + "Pâtes et papiers", | |
| 540 | + "Emballage", | |
| 541 | + "Fabrication" | |
| 542 | + ], | |
| 543 | + "connector": "successfactors", | |
| 544 | + "status": "actif", | |
| 545 | + "region": "Kingsey Falls, Drummondville, Candiac" | |
| 546 | + }, | |
| 547 | + { | |
| 548 | + "id": "cdpq", | |
| 549 | + "name": "CDPQ — Caisse de dépôt et placement du Québec", | |
| 550 | + "url": "https://cdpq.com", | |
| 551 | + "careers_url": "https://cdpq.wd10.myworkdayjobs.com/CDPQ", | |
| 552 | + "sectors": [], | |
| 553 | + "connector": "workday", | |
| 554 | + "status": "actif", | |
| 555 | + "region": "Montréal" | |
| 556 | + }, | |
| 557 | + { | |
| 558 | + "id": "cfmontreal", | |
| 559 | + "name": "CF Montréal", | |
| 560 | + "url": "", | |
| 561 | + "careers_url": "https://jobs.smartrecruiters.com/company/CFMontreal", | |
| 562 | + "sectors": [ | |
| 563 | + "Sport" | |
| 564 | + ], | |
| 565 | + "connector": "smartrecruiters", | |
| 566 | + "status": "actif", | |
| 567 | + "region": "Montréal" | |
| 568 | + }, | |
| 569 | + { | |
| 570 | + "id": "cgi", | |
| 571 | + "name": "CGI", | |
| 572 | + "url": "https://www.cgi.com", | |
| 573 | + "careers_url": "https://cgi.njoyn.com/CORP/xweb/xweb.asp?clid=21001&page=joblisting&lang=2", | |
| 574 | + "connector": "njoyn", | |
| 575 | + "sectors": [ | |
| 576 | + "TI", | |
| 577 | + "Services-conseils" | |
| 578 | + ], | |
| 579 | + "region": "Montréal, Québec", | |
| 580 | + "status": "actif" | |
| 581 | + }, | |
| 582 | + { | |
| 583 | + "id": "charger_logistics_inc", | |
| 584 | + "name": "Charger Logistics", | |
| 585 | + "url": "", | |
| 586 | + "careers_url": "https://apply.workable.com/charger-logistics-inc", | |
| 587 | + "sectors": [ | |
| 588 | + "Transport", | |
| 589 | + "Logistique" | |
| 590 | + ], | |
| 591 | + "connector": "workable", | |
| 592 | + "status": "actif", | |
| 593 | + "region": "Dorval" | |
| 594 | + }, | |
| 595 | + { | |
| 596 | + "id": "chu_quebec", | |
| 597 | + "name": "CHU de Québec — Université Laval", | |
| 598 | + "url": "https://www.chudequebec.ca", | |
| 599 | + "careers_url": "https://chudequebec.carrieresante.gouv.qc.ca", | |
| 600 | + "connector": "wpjobmanager", | |
| 601 | + "sectors": [ | |
| 602 | + "Santé", | |
| 603 | + "Secteur public" | |
| 604 | + ], | |
| 605 | + "region": "Québec", | |
| 606 | + "status": "actif" | |
| 607 | + }, | |
| 608 | + { | |
| 609 | + "id": "chum", | |
| 610 | + "name": "CHUM", | |
| 611 | + "url": "https://www.chumontreal.qc.ca", | |
| 612 | + "careers_url": "https://chum.carrieresante.gouv.qc.ca", | |
| 613 | + "connector": "wpjobmanager", | |
| 614 | + "sectors": [ | |
| 615 | + "Santé", | |
| 616 | + "Secteur public" | |
| 617 | + ], | |
| 618 | + "region": "Montréal", | |
| 619 | + "status": "actif" | |
| 620 | + }, | |
| 621 | + { | |
| 622 | + "id": "churchdwight", | |
| 623 | + "name": "Church & Dwight Canada", | |
| 624 | + "url": "https://churchdwight.ca", | |
| 625 | + "careers_url": "https://churchdwight.wd1.myworkdayjobs.com/chdcanadacareers", | |
| 626 | + "sectors": [ | |
| 627 | + "Production" | |
| 628 | + ], | |
| 629 | + "connector": "workday", | |
| 630 | + "status": "actif", | |
| 631 | + "region": "" | |
| 632 | + }, | |
| 633 | + { | |
| 634 | + "id": "cibc", | |
| 635 | + "name": "Banque CIBC", | |
| 636 | + "url": "", | |
| 637 | + "careers_url": "https://cibc.wd3.myworkdayjobs.com/search", | |
| 638 | + "sectors": [ | |
| 639 | + "Finance" | |
| 640 | + ], | |
| 641 | + "connector": "workday", | |
| 642 | + "status": "actif", | |
| 643 | + "region": "Montréal, Québec" | |
| 644 | + }, | |
| 645 | + { | |
| 646 | + "id": "cima2", | |
| 647 | + "name": "CIMA+", | |
| 648 | + "url": "", | |
| 649 | + "careers_url": "https://jobs.smartrecruiters.com/company/CIMA2", | |
| 650 | + "sectors": [ | |
| 651 | + "Ingénierie" | |
| 652 | + ], | |
| 653 | + "connector": "smartrecruiters", | |
| 654 | + "status": "actif", | |
| 655 | + "region": "Montréal, Québec, Laval" | |
| 656 | + }, | |
| 657 | + { | |
| 658 | + "id": "circlek", | |
| 659 | + "name": "Couche-Tard / Circle K", | |
| 660 | + "url": "", | |
| 661 | + "careers_url": "https://circlek.wd3.myworkdayjobs.com/CircleKStoreJobs", | |
| 662 | + "sectors": [ | |
| 663 | + "Commerce de détail" | |
| 664 | + ], | |
| 665 | + "connector": "workday", | |
| 666 | + "status": "actif", | |
| 667 | + "region": "Québec, Montréal, Drummondville" | |
| 668 | + }, | |
| 669 | + { | |
| 670 | + "id": "cirquedusoleil", | |
| 671 | + "name": "Cirque du Soleil", | |
| 672 | + "url": "https://www.cirquedusoleil.com", | |
| 673 | + "careers_url": "https://jobs.lever.co/cirquedusoleil", | |
| 674 | + "sectors": [ | |
| 675 | + "Divertissement", | |
| 676 | + "Création" | |
| 677 | + ], | |
| 678 | + "connector": "lever", | |
| 679 | + "status": "actif", | |
| 680 | + "region": "Montréal" | |
| 681 | + }, | |
| 682 | + { | |
| 683 | + "id": "cisss_abitibi", | |
| 684 | + "name": "CISSS de l'Abitibi-Témiscamingue", | |
| 685 | + "url": "https://www.cisss-at.gouv.qc.ca", | |
| 686 | + "careers_url": "https://cisssat.carrieresante.gouv.qc.ca", | |
| 687 | + "connector": "wpjobmanager", | |
| 688 | + "sectors": [ | |
| 689 | + "Santé", | |
| 690 | + "Secteur public" | |
| 691 | + ], | |
| 692 | + "region": "Abitibi-Témiscamingue", | |
| 693 | + "status": "actif" | |
| 694 | + }, | |
| 695 | + { | |
| 696 | + "id": "cisss_chaudiere_appalaches", | |
| 697 | + "name": "CISSS de Chaudière-Appalaches", | |
| 698 | + "url": "https://www.cisssca.com", | |
| 699 | + "careers_url": "https://cisssca.carrieresante.gouv.qc.ca", | |
| 700 | + "connector": "wpjobmanager", | |
| 701 | + "sectors": [ | |
| 702 | + "Santé", | |
| 703 | + "Secteur public" | |
| 704 | + ], | |
| 705 | + "region": "Chaudière-Appalaches", | |
| 706 | + "status": "actif" | |
| 707 | + }, | |
| 708 | + { | |
| 709 | + "id": "cisss_lanaudiere", | |
| 710 | + "name": "CISSS de Lanaudière", | |
| 711 | + "url": "https://www.cisss-lanaudiere.gouv.qc.ca", | |
| 712 | + "careers_url": "https://lanaudiere.carrieresante.gouv.qc.ca", | |
| 713 | + "connector": "wpjobmanager", | |
| 714 | + "sectors": [ | |
| 715 | + "Santé", | |
| 716 | + "Secteur public" | |
| 717 | + ], | |
| 718 | + "region": "Lanaudière", | |
| 719 | + "status": "actif" | |
| 720 | + }, | |
| 721 | + { | |
| 722 | + "id": "cisss_laurentides", | |
| 723 | + "name": "CISSS des Laurentides", | |
| 724 | + "url": "https://www.santelaurentides.gouv.qc.ca", | |
| 725 | + "careers_url": "https://laurentides.carrieresante.gouv.qc.ca", | |
| 726 | + "connector": "wpjobmanager", | |
| 727 | + "sectors": [ | |
| 728 | + "Santé", | |
| 729 | + "Secteur public" | |
| 730 | + ], | |
| 731 | + "region": "Laurentides", | |
| 732 | + "status": "actif" | |
| 733 | + }, | |
| 734 | + { | |
| 735 | + "id": "cisss_laval", | |
| 736 | + "name": "CISSS de Laval", | |
| 737 | + "url": "https://www.lavalensante.com", | |
| 738 | + "careers_url": "https://cissslaval.carrieresante.gouv.qc.ca", | |
| 739 | + "connector": "wpjobmanager", | |
| 740 | + "sectors": [ | |
| 741 | + "Santé", | |
| 742 | + "Secteur public" | |
| 743 | + ], | |
| 744 | + "region": "Laval", | |
| 745 | + "status": "actif" | |
| 746 | + }, | |
| 747 | + { | |
| 748 | + "id": "cisss_outaouais", | |
| 749 | + "name": "CISSS de l'Outaouais", | |
| 750 | + "url": "https://cisss-outaouais.gouv.qc.ca", | |
| 751 | + "careers_url": "https://viensvivretespassions.ca", | |
| 752 | + "connector": "wpjobmanager", | |
| 753 | + "sectors": [ | |
| 754 | + "Santé", | |
| 755 | + "Secteur public" | |
| 756 | + ], | |
| 757 | + "region": "Outaouais", | |
| 758 | + "status": "actif" | |
| 759 | + }, | |
| 760 | + { | |
| 761 | + "id": "ciusss_est_montreal", | |
| 762 | + "name": "CIUSSS de l'Est-de-l'Île-de-Montréal", | |
| 763 | + "url": "https://ciusss-estmtl.gouv.qc.ca", | |
| 764 | + "careers_url": "https://ciusssemtl.taleo.net/careersection/cemtl/jobsearch.ftl?lang=fr", | |
| 765 | + "sectors": [ | |
| 766 | + "Santé", | |
| 767 | + "Services sociaux", | |
| 768 | + "Secteur public" | |
| 769 | + ], | |
| 770 | + "connector": "taleo", | |
| 771 | + "status": "actif", | |
| 772 | + "region": "Montréal" | |
| 773 | + }, | |
| 774 | + { | |
| 775 | + "id": "cogeco", | |
| 776 | + "name": "Cogeco", | |
| 777 | + "url": "", | |
| 778 | + "careers_url": "https://cogeco.wd3.myworkdayjobs.com/Cogeco_Careers", | |
| 779 | + "sectors": [ | |
| 780 | + "Télécoms" | |
| 781 | + ], | |
| 782 | + "connector": "workday", | |
| 783 | + "status": "actif", | |
| 784 | + "region": "Montréal, Trois-Rivières" | |
| 785 | + }, | |
| 786 | + { | |
| 787 | + "id": "cohere", | |
| 788 | + "name": "Cohere", | |
| 789 | + "url": "", | |
| 790 | + "careers_url": "https://jobs.ashbyhq.com/cohere", | |
| 791 | + "sectors": [ | |
| 792 | + "TI", | |
| 793 | + "IA" | |
| 794 | + ], | |
| 795 | + "connector": "ashby", | |
| 796 | + "status": "actif", | |
| 797 | + "region": "Montréal" | |
| 798 | + }, | |
| 799 | + { | |
| 800 | + "id": "cordonbleu", | |
| 801 | + "name": "Aliments Ouimet-Cordon Bleu inc.", | |
| 802 | + "url": "https://clarkcordonbleu.ca", | |
| 803 | + "careers_url": "https://cordonbleu.bamboohr.com/careers", | |
| 804 | + "sectors": [ | |
| 805 | + "Production" | |
| 806 | + ], | |
| 807 | + "connector": "bamboohr", | |
| 808 | + "status": "actif", | |
| 809 | + "region": "" | |
| 810 | + }, | |
| 811 | + { | |
| 812 | + "id": "cssdd", | |
| 813 | + "name": "CSS des Découvreurs", | |
| 814 | + "url": "https://www.cssdd.gouv.qc.ca", | |
| 815 | + "careers_url": "https://emplois.cssdd.gouv.qc.ca", | |
| 816 | + "connector": "digitalrecruiters", | |
| 817 | + "sectors": [ | |
| 818 | + "Éducation", | |
| 819 | + "Secteur public" | |
| 820 | + ], | |
| 821 | + "region": "Québec", | |
| 822 | + "status": "actif" | |
| 823 | + }, | |
| 824 | + { | |
| 825 | + "id": "cultures_genv", | |
| 826 | + "name": "Cultures Gen V", | |
| 827 | + "url": "https://gen-v.com", | |
| 828 | + "careers_url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=8b346731-d189-4cf2-a14c-9e48d38befde&ccId=36427051_2&lang=fr_CA", | |
| 829 | + "connector": "adp", | |
| 830 | + "sectors": [ | |
| 831 | + "Agroalimentaire", | |
| 832 | + "Serriculture" | |
| 833 | + ], | |
| 834 | + "region": "Montérégie", | |
| 835 | + "status": "actif" | |
| 836 | + }, | |
| 837 | + { | |
| 838 | + "id": "dcbel", | |
| 839 | + "name": "dcbel", | |
| 840 | + "url": "", | |
| 841 | + "careers_url": "https://dcbel.bamboohr.com/careers", | |
| 842 | + "sectors": [ | |
| 843 | + "Énergie", | |
| 844 | + "TI" | |
| 845 | + ], | |
| 846 | + "connector": "bamboohr", | |
| 847 | + "status": "actif", | |
| 848 | + "region": "Montréal" | |
| 849 | + }, | |
| 850 | + { | |
| 851 | + "id": "deloitte", | |
| 852 | + "name": "Deloitte Canada", | |
| 853 | + "url": "https://www.deloitte.com/ca", | |
| 854 | + "careers_url": "https://careers.deloitte.ca", | |
| 855 | + "connector": "successfactors", | |
| 856 | + "sectors": [ | |
| 857 | + "Services-conseils", | |
| 858 | + "Comptabilité", | |
| 859 | + "TI" | |
| 860 | + ], | |
| 861 | + "region": "Montréal, Québec", | |
| 862 | + "status": "actif" | |
| 863 | + }, | |
| 864 | + { | |
| 865 | + "id": "depot-direct", | |
| 866 | + "name": "Dépôt direct employeurs", | |
| 867 | + "url": "https://www.job-ka.com/employeurs", | |
| 868 | + "careers_url": "https://www.job-ka.com/employeurs", | |
| 869 | + "sectors": [ | |
| 870 | + "Tous secteurs" | |
| 871 | + ], | |
| 872 | + "connector": "depot-direct", | |
| 873 | + "status": "modération", | |
| 874 | + "region": "Québec (province)" | |
| 875 | + }, | |
| 876 | + { | |
| 877 | + "id": "desjardins", | |
| 878 | + "name": "Mouvement Desjardins", | |
| 879 | + "url": "https://www.desjardins.com", | |
| 880 | + "careers_url": "https://desjardins.wd10.myworkdayjobs.com/Desjardins", | |
| 881 | + "sectors": [ | |
| 882 | + "Finance", | |
| 883 | + "Assurance", | |
| 884 | + "TI" | |
| 885 | + ], | |
| 886 | + "connector": "workday", | |
| 887 | + "status": "actif", | |
| 888 | + "region": "Lévis / province" | |
| 889 | + }, | |
| 890 | + { | |
| 891 | + "id": "devimco", | |
| 892 | + "name": "Devimco Appartements", | |
| 893 | + "url": "https://devimco.com", | |
| 894 | + "careers_url": "https://devimco.bamboohr.com/careers", | |
| 895 | + "sectors": [ | |
| 896 | + "Immobilier" | |
| 897 | + ], | |
| 898 | + "connector": "bamboohr", | |
| 899 | + "status": "actif", | |
| 900 | + "region": "" | |
| 901 | + }, | |
| 902 | + { | |
| 903 | + "id": "dilitrust", | |
| 904 | + "name": "DiliTrust", | |
| 905 | + "url": "", | |
| 906 | + "careers_url": "https://jobs.lever.co/dilitrust", | |
| 907 | + "sectors": [ | |
| 908 | + "TI", | |
| 909 | + "Juridique" | |
| 910 | + ], | |
| 911 | + "connector": "lever", | |
| 912 | + "status": "actif", | |
| 913 | + "region": "Montréal" | |
| 914 | + }, | |
| 915 | + { | |
| 916 | + "id": "distro", | |
| 917 | + "name": "Distro", | |
| 918 | + "url": "", | |
| 919 | + "careers_url": "https://jobs.lever.co/distro", | |
| 920 | + "sectors": [ | |
| 921 | + "Ventes", | |
| 922 | + "TI" | |
| 923 | + ], | |
| 924 | + "connector": "lever", | |
| 925 | + "status": "actif", | |
| 926 | + "region": "Montréal, Westmount" | |
| 927 | + }, | |
| 928 | + { | |
| 929 | + "id": "domtar", | |
| 930 | + "name": "Domtar", | |
| 931 | + "url": "https://www.domtar.com", | |
| 932 | + "careers_url": "https://jobs.domtar.com", | |
| 933 | + "sectors": [ | |
| 934 | + "Pâtes et papiers", | |
| 935 | + "Foresterie", | |
| 936 | + "Fabrication" | |
| 937 | + ], | |
| 938 | + "connector": "successfactors", | |
| 939 | + "status": "actif", | |
| 940 | + "region": "Montréal, Windsor, Lachine" | |
| 941 | + }, | |
| 942 | + { | |
| 943 | + "id": "dulcedo", | |
| 944 | + "name": "Dulcedo Management", | |
| 945 | + "url": "", | |
| 946 | + "careers_url": "https://jobs.lever.co/dulcedo", | |
| 947 | + "sectors": [ | |
| 948 | + "Mode", | |
| 949 | + "Gestion d'artistes" | |
| 950 | + ], | |
| 951 | + "connector": "lever", | |
| 952 | + "status": "actif", | |
| 953 | + "region": "Montréal" | |
| 954 | + }, | |
| 955 | + { | |
| 956 | + "id": "edf_renouvelables", | |
| 957 | + "name": "EDF Renouvelables Canada", | |
| 958 | + "url": "https://www.edf-renouvelables.ca", | |
| 959 | + "careers_url": "https://cafrench-edf-re.icims.com/jobs/search?ss=1", | |
| 960 | + "sectors": [ | |
| 961 | + "Énergie", | |
| 962 | + "Ingénierie" | |
| 963 | + ], | |
| 964 | + "connector": "icims", | |
| 965 | + "status": "actif", | |
| 966 | + "region": "Montréal" | |
| 967 | + }, | |
| 968 | + { | |
| 969 | + "id": "emcocorporation", | |
| 970 | + "name": "EMCO", | |
| 971 | + "url": "", | |
| 972 | + "careers_url": "https://jobs.smartrecruiters.com/company/EMCOCorporation", | |
| 973 | + "sectors": [ | |
| 974 | + "Distribution", | |
| 975 | + "Construction" | |
| 976 | + ], | |
| 977 | + "connector": "smartrecruiters", | |
| 978 | + "status": "actif", | |
| 979 | + "region": "Montréal, Québec, Laval" | |
| 980 | + }, | |
| 981 | + { | |
| 982 | + "id": "eminent_valet", | |
| 983 | + "name": "Eminent Valet", | |
| 984 | + "url": "", | |
| 985 | + "careers_url": "https://apply.workable.com/eminent-valet", | |
| 986 | + "sectors": [ | |
| 987 | + "Services" | |
| 988 | + ], | |
| 989 | + "connector": "workable", | |
| 990 | + "status": "actif", | |
| 991 | + "region": "Montréal" | |
| 992 | + }, | |
| 993 | + { | |
| 994 | + "id": "eosaircraftinc", | |
| 995 | + "name": "EOS Aircraft", | |
| 996 | + "url": "", | |
| 997 | + "careers_url": "https://eosaircraftinc.bamboohr.com/careers", | |
| 998 | + "sectors": [ | |
| 999 | + "Aéronautique" | |
| 1000 | + ], | |
| 1001 | + "connector": "bamboohr", | |
| 1002 | + "status": "actif", | |
| 1003 | + "region": "Montréal" | |
| 1004 | + }, | |
| 1005 | + { | |
| 1006 | + "id": "eq3_ltd", | |
| 1007 | + "name": "EQ3", | |
| 1008 | + "url": "", | |
| 1009 | + "careers_url": "https://eq3-ltd.breezy.hr", | |
| 1010 | + "sectors": [ | |
| 1011 | + "Commerce de détail", | |
| 1012 | + "Meuble" | |
| 1013 | + ], | |
| 1014 | + "connector": "breezy", | |
| 1015 | + "status": "actif", | |
| 1016 | + "region": "Brossard, Laval, Montréal" | |
| 1017 | + }, | |
| 1018 | + { | |
| 1019 | + "id": "eqbank", | |
| 1020 | + "name": "EQ Bank", | |
| 1021 | + "url": "", | |
| 1022 | + "careers_url": "https://jobs.lever.co/eqbank", | |
| 1023 | + "sectors": [ | |
| 1024 | + "Finance" | |
| 1025 | + ], | |
| 1026 | + "connector": "lever", | |
| 1027 | + "status": "actif", | |
| 1028 | + "region": "Montréal" | |
| 1029 | + }, | |
| 1030 | + { | |
| 1031 | + "id": "espresso_jobs", | |
| 1032 | + "name": "Espresso-Jobs", | |
| 1033 | + "url": "https://www.espresso-jobs.com", | |
| 1034 | + "careers_url": "https://www.espresso-jobs.com/emploi", | |
| 1035 | + "sectors": [ | |
| 1036 | + "Portail", | |
| 1037 | + "TI", | |
| 1038 | + "Créatif" | |
| 1039 | + ], | |
| 1040 | + "connector": "portail", | |
| 1041 | + "status": "actif", | |
| 1042 | + "region": "Québec (province)", | |
| 1043 | + "aggregator": true | |
| 1044 | + }, | |
| 1045 | + { | |
| 1046 | + "id": "evlo", | |
| 1047 | + "name": "EVLO (Hydro-Québec)", | |
| 1048 | + "url": "", | |
| 1049 | + "careers_url": "https://evlo.bamboohr.com/careers", | |
| 1050 | + "sectors": [ | |
| 1051 | + "Énergie" | |
| 1052 | + ], | |
| 1053 | + "connector": "bamboohr", | |
| 1054 | + "status": "actif", | |
| 1055 | + "region": "Varennes" | |
| 1056 | + }, | |
| 1057 | + { | |
| 1058 | + "id": "evolving_web", | |
| 1059 | + "name": "Evolving Web", | |
| 1060 | + "url": "", | |
| 1061 | + "careers_url": "https://apply.workable.com/evolving-web", | |
| 1062 | + "sectors": [ | |
| 1063 | + "TI", | |
| 1064 | + "Web" | |
| 1065 | + ], | |
| 1066 | + "connector": "workable", | |
| 1067 | + "status": "actif", | |
| 1068 | + "region": "Montréal" | |
| 1069 | + }, | |
| 1070 | + { | |
| 1071 | + "id": "exfo", | |
| 1072 | + "name": "EXFO", | |
| 1073 | + "url": "", | |
| 1074 | + "careers_url": "https://exfo.wd10.myworkdayjobs.com/exfo_careers", | |
| 1075 | + "sectors": [ | |
| 1076 | + "TI", | |
| 1077 | + "Télécommunications" | |
| 1078 | + ], | |
| 1079 | + "connector": "workday", | |
| 1080 | + "status": "actif", | |
| 1081 | + "region": "Québec" | |
| 1082 | + }, | |
| 1083 | + { | |
| 1084 | + "id": "exo", | |
| 1085 | + "name": "exo (transport métropolitain)", | |
| 1086 | + "url": "https://exo.quebec", | |
| 1087 | + "careers_url": "https://phh.tbe.taleo.net/phh04/ats/careers/v2/jobSearch?org=AMT&cws=39", | |
| 1088 | + "connector": "taleo_tbe", | |
| 1089 | + "sectors": [ | |
| 1090 | + "Transport", | |
| 1091 | + "Secteur public" | |
| 1092 | + ], | |
| 1093 | + "region": "Montréal", | |
| 1094 | + "status": "actif" | |
| 1095 | + }, | |
| 1096 | + { | |
| 1097 | + "id": "explorance", | |
| 1098 | + "name": "Explorance", | |
| 1099 | + "url": "", | |
| 1100 | + "careers_url": "https://explorance.bamboohr.com/careers", | |
| 1101 | + "sectors": [ | |
| 1102 | + "TI", | |
| 1103 | + "SaaS" | |
| 1104 | + ], | |
| 1105 | + "connector": "bamboohr", | |
| 1106 | + "status": "actif", | |
| 1107 | + "region": "Montréal" | |
| 1108 | + }, | |
| 1109 | + { | |
| 1110 | + "id": "fenetresconcept", | |
| 1111 | + "name": "Fenêtres Concept", | |
| 1112 | + "url": "https://fenetresconcept.com", | |
| 1113 | + "careers_url": "https://fenetresconcept.bamboohr.com/careers", | |
| 1114 | + "sectors": [ | |
| 1115 | + "Production" | |
| 1116 | + ], | |
| 1117 | + "connector": "bamboohr", | |
| 1118 | + "status": "actif", | |
| 1119 | + "region": "" | |
| 1120 | + }, | |
| 1121 | + { | |
| 1122 | + "id": "flare", | |
| 1123 | + "name": "Flare (cybersécurité)", | |
| 1124 | + "url": "", | |
| 1125 | + "careers_url": "https://flare.bamboohr.com/careers", | |
| 1126 | + "sectors": [ | |
| 1127 | + "TI" | |
| 1128 | + ], | |
| 1129 | + "connector": "bamboohr", | |
| 1130 | + "status": "actif", | |
| 1131 | + "region": "Montréal" | |
| 1132 | + }, | |
| 1133 | + { | |
| 1134 | + "id": "flinks", | |
| 1135 | + "name": "Flinks", | |
| 1136 | + "url": "", | |
| 1137 | + "careers_url": "https://apply.workable.com/flinks", | |
| 1138 | + "sectors": [ | |
| 1139 | + "TI", | |
| 1140 | + "Fintech" | |
| 1141 | + ], | |
| 1142 | + "connector": "workable", | |
| 1143 | + "status": "actif", | |
| 1144 | + "region": "Montréal" | |
| 1145 | + }, | |
| 1146 | + { | |
| 1147 | + "id": "fondsftq", | |
| 1148 | + "name": "Fonds de solidarité FTQ", | |
| 1149 | + "url": "https://fondsftq.com", | |
| 1150 | + "careers_url": "https://fondsftq.wd10.myworkdayjobs.com/sitecarriere_externe", | |
| 1151 | + "sectors": [], | |
| 1152 | + "connector": "workday", | |
| 1153 | + "status": "actif", | |
| 1154 | + "region": "Montréal" | |
| 1155 | + }, | |
| 1156 | + { | |
| 1157 | + "id": "framestore", | |
| 1158 | + "name": "Framestore", | |
| 1159 | + "url": "", | |
| 1160 | + "careers_url": "https://framestore.recruitee.com", | |
| 1161 | + "sectors": [ | |
| 1162 | + "Effets visuels", | |
| 1163 | + "Création" | |
| 1164 | + ], | |
| 1165 | + "connector": "recruitee", | |
| 1166 | + "status": "actif", | |
| 1167 | + "region": "Montréal" | |
| 1168 | + }, | |
| 1169 | + { | |
| 1170 | + "id": "fruitdor", | |
| 1171 | + "name": "Fruit d'Or", | |
| 1172 | + "url": "https://fruitdor.ca", | |
| 1173 | + "careers_url": "https://recruiting.ultipro.ca/FRU5100FRUIT/JobBoard/91103632-8052-480e-a5b0-a6028d640577/", | |
| 1174 | + "connector": "ultipro", | |
| 1175 | + "sectors": [ | |
| 1176 | + "Agroalimentaire", | |
| 1177 | + "Manufacturier" | |
| 1178 | + ], | |
| 1179 | + "region": "Centre-du-Québec", | |
| 1180 | + "status": "actif" | |
| 1181 | + }, | |
| 1182 | + { | |
| 1183 | + "id": "fuse", | |
| 1184 | + "name": "Fuse Energy", | |
| 1185 | + "url": "", | |
| 1186 | + "careers_url": "https://jobs.ashbyhq.com/Fuse", | |
| 1187 | + "sectors": [ | |
| 1188 | + "Énergie", | |
| 1189 | + "TI" | |
| 1190 | + ], | |
| 1191 | + "connector": "ashby", | |
| 1192 | + "status": "actif", | |
| 1193 | + "region": "Montréal" | |
| 1194 | + }, | |
| 1195 | + { | |
| 1196 | + "id": "gameloft", | |
| 1197 | + "name": "Gameloft", | |
| 1198 | + "url": "https://www.gameloft.com", | |
| 1199 | + "careers_url": "https://jobs.smartrecruiters.com/company/gameloft", | |
| 1200 | + "sectors": [ | |
| 1201 | + "Jeux vidéo" | |
| 1202 | + ], | |
| 1203 | + "connector": "smartrecruiters", | |
| 1204 | + "status": "actif", | |
| 1205 | + "region": "Montréal" | |
| 1206 | + }, | |
| 1207 | + { | |
| 1208 | + "id": "gearboxquebec", | |
| 1209 | + "name": "Gearbox Studio Québec", | |
| 1210 | + "url": "", | |
| 1211 | + "careers_url": "https://job-boards.greenhouse.io/gearboxquebec", | |
| 1212 | + "sectors": [ | |
| 1213 | + "Jeux vidéo" | |
| 1214 | + ], | |
| 1215 | + "connector": "greenhouse", | |
| 1216 | + "status": "actif", | |
| 1217 | + "region": "Montréal, Québec" | |
| 1218 | + }, | |
| 1219 | + { | |
| 1220 | + "id": "genetec_inc", | |
| 1221 | + "name": "Genetec", | |
| 1222 | + "url": "https://genetec.com", | |
| 1223 | + "careers_url": "https://apply.workable.com/genetec-inc", | |
| 1224 | + "sectors": [], | |
| 1225 | + "connector": "workable", | |
| 1226 | + "status": "actif", | |
| 1227 | + "region": "Montréal" | |
| 1228 | + }, | |
| 1229 | + { | |
| 1230 | + "id": "gfs", | |
| 1231 | + "name": "Service alimentaire Gordon", | |
| 1232 | + "url": "https://gfs.ca", | |
| 1233 | + "careers_url": "https://gfs.wd5.myworkdayjobs.com/usjobs-french", | |
| 1234 | + "sectors": [ | |
| 1235 | + "manufacturier/commerce" | |
| 1236 | + ], | |
| 1237 | + "connector": "workday", | |
| 1238 | + "status": "actif", | |
| 1239 | + "region": "" | |
| 1240 | + }, | |
| 1241 | + { | |
| 1242 | + "id": "gologic", | |
| 1243 | + "name": "GoLogic", | |
| 1244 | + "url": "", | |
| 1245 | + "careers_url": "https://jobs.smartrecruiters.com/company/gologic", | |
| 1246 | + "sectors": [ | |
| 1247 | + "TI" | |
| 1248 | + ], | |
| 1249 | + "connector": "smartrecruiters", | |
| 1250 | + "status": "actif", | |
| 1251 | + "region": "Montréal" | |
| 1252 | + }, | |
| 1253 | + { | |
| 1254 | + "id": "gorh", | |
| 1255 | + "name": "Go RH", | |
| 1256 | + "url": "", | |
| 1257 | + "careers_url": "https://jobs.lever.co/gorh", | |
| 1258 | + "sectors": [ | |
| 1259 | + "Placement", | |
| 1260 | + "RH" | |
| 1261 | + ], | |
| 1262 | + "connector": "lever", | |
| 1263 | + "status": "actif", | |
| 1264 | + "region": "Montréal, Québec" | |
| 1265 | + }, | |
| 1266 | + { | |
| 1267 | + "id": "groupecanam", | |
| 1268 | + "name": "Groupe Canam", | |
| 1269 | + "url": "", | |
| 1270 | + "careers_url": "https://jobs.smartrecruiters.com/company/groupecanam", | |
| 1271 | + "sectors": [ | |
| 1272 | + "Production", | |
| 1273 | + "Construction" | |
| 1274 | + ], | |
| 1275 | + "connector": "smartrecruiters", | |
| 1276 | + "status": "actif", | |
| 1277 | + "region": "Saint-Georges" | |
| 1278 | + }, | |
| 1279 | + { | |
| 1280 | + "id": "gsk", | |
| 1281 | + "name": "GSK", | |
| 1282 | + "url": "", | |
| 1283 | + "careers_url": "https://gsk.wd5.myworkdayjobs.com/GSKCareers", | |
| 1284 | + "sectors": [ | |
| 1285 | + "Pharmaceutique" | |
| 1286 | + ], | |
| 1287 | + "connector": "workday", | |
| 1288 | + "status": "actif", | |
| 1289 | + "region": "Laval, Québec" | |
| 1290 | + }, | |
| 1291 | + { | |
| 1292 | + "id": "guichet_emplois", | |
| 1293 | + "name": "Guichet-Emplois (Canada)", | |
| 1294 | + "url": "https://www.guichetemplois.gc.ca", | |
| 1295 | + "careers_url": "https://www.guichetemplois.gc.ca/jobsearch/rechercheemplois?fprov=QC", | |
| 1296 | + "sectors": [ | |
| 1297 | + "Portail", | |
| 1298 | + "Tous secteurs" | |
| 1299 | + ], | |
| 1300 | + "connector": "portail", | |
| 1301 | + "status": "actif", | |
| 1302 | + "region": "Québec (province)", | |
| 1303 | + "aggregator": true | |
| 1304 | + }, | |
| 1305 | + { | |
| 1306 | + "id": "gurussolutions", | |
| 1307 | + "name": "GURUS Solutions", | |
| 1308 | + "url": "", | |
| 1309 | + "careers_url": "https://job-boards.greenhouse.io/gurussolutions", | |
| 1310 | + "sectors": [ | |
| 1311 | + "TI" | |
| 1312 | + ], | |
| 1313 | + "connector": "greenhouse", | |
| 1314 | + "status": "actif", | |
| 1315 | + "region": "Montréal" | |
| 1316 | + }, | |
| 1317 | + { | |
| 1318 | + "id": "hec_montreal", | |
| 1319 | + "name": "HEC Montréal", | |
| 1320 | + "url": "https://www.hec.ca", | |
| 1321 | + "careers_url": "https://tre.tbe.taleo.net/tre01/ats/careers/v2/jobSearch?org=NYQEDG&cws=40", | |
| 1322 | + "connector": "taleo_tbe", | |
| 1323 | + "sectors": [ | |
| 1324 | + "Éducation", | |
| 1325 | + "Administration" | |
| 1326 | + ], | |
| 1327 | + "region": "Montréal", | |
| 1328 | + "status": "actif" | |
| 1329 | + }, | |
| 1330 | + { | |
| 1331 | + "id": "hec_montreal_profs", | |
| 1332 | + "name": "HEC Montréal — corps professoral", | |
| 1333 | + "url": "https://www.hec.ca", | |
| 1334 | + "careers_url": "https://tre.tbe.taleo.net/tre01/ats/careers/v2/jobSearch?org=NYQEDG&cws=41", | |
| 1335 | + "connector": "taleo_tbe", | |
| 1336 | + "sectors": [ | |
| 1337 | + "Éducation", | |
| 1338 | + "Recherche" | |
| 1339 | + ], | |
| 1340 | + "region": "Montréal", | |
| 1341 | + "status": "actif" | |
| 1342 | + }, | |
| 1343 | + { | |
| 1344 | + "id": "hopper", | |
| 1345 | + "name": "Hopper", | |
| 1346 | + "url": "", | |
| 1347 | + "careers_url": "https://jobs.ashbyhq.com/hopper", | |
| 1348 | + "sectors": [ | |
| 1349 | + "TI", | |
| 1350 | + "Voyage" | |
| 1351 | + ], | |
| 1352 | + "connector": "ashby", | |
| 1353 | + "status": "actif", | |
| 1354 | + "region": "Montréal" | |
| 1355 | + }, | |
| 1356 | + { | |
| 1357 | + "id": "hoyoverse", | |
| 1358 | + "name": "HoYoverse", | |
| 1359 | + "url": "", | |
| 1360 | + "careers_url": "https://jobs.smartrecruiters.com/company/hoyoverse", | |
| 1361 | + "sectors": [ | |
| 1362 | + "Jeux vidéo" | |
| 1363 | + ], | |
| 1364 | + "connector": "smartrecruiters", | |
| 1365 | + "status": "actif", | |
| 1366 | + "region": "Montréal" | |
| 1367 | + }, | |
| 1368 | + { | |
| 1369 | + "id": "huaweicanada", | |
| 1370 | + "name": "Huawei Canada", | |
| 1371 | + "url": "", | |
| 1372 | + "careers_url": "https://huaweicanada.recruitee.com", | |
| 1373 | + "sectors": [ | |
| 1374 | + "TI", | |
| 1375 | + "Recherche" | |
| 1376 | + ], | |
| 1377 | + "connector": "recruitee", | |
| 1378 | + "status": "actif", | |
| 1379 | + "region": "Montréal" | |
| 1380 | + }, | |
| 1381 | + { | |
| 1382 | + "id": "hydroquebec", | |
| 1383 | + "name": "Hydro-Québec", | |
| 1384 | + "url": "https://www.hydroquebec.com", | |
| 1385 | + "careers_url": "https://emploi.hydroquebec.com", | |
| 1386 | + "connector": "successfactors", | |
| 1387 | + "sectors": [ | |
| 1388 | + "Énergie", | |
| 1389 | + "Génie", | |
| 1390 | + "TI", | |
| 1391 | + "Secteur public" | |
| 1392 | + ], | |
| 1393 | + "region": "Montréal, Québec (province)", | |
| 1394 | + "status": "actif" | |
| 1395 | + }, | |
| 1396 | + { | |
| 1397 | + "id": "ia_groupe", | |
| 1398 | + "name": "iA Groupe financier", | |
| 1399 | + "url": "https://ia.ca", | |
| 1400 | + "careers_url": "https://ia.wd3.myworkdayjobs.com/Professional", | |
| 1401 | + "sectors": [ | |
| 1402 | + "Assurance", | |
| 1403 | + "Finance", | |
| 1404 | + "TI" | |
| 1405 | + ], | |
| 1406 | + "connector": "workday", | |
| 1407 | + "status": "actif", | |
| 1408 | + "region": "Québec" | |
| 1409 | + }, | |
| 1410 | + { | |
| 1411 | + "id": "industrious", | |
| 1412 | + "name": "Industrious", | |
| 1413 | + "url": "", | |
| 1414 | + "careers_url": "https://jobs.ashbyhq.com/industrious", | |
| 1415 | + "sectors": [ | |
| 1416 | + "Immobilier", | |
| 1417 | + "Services" | |
| 1418 | + ], | |
| 1419 | + "connector": "ashby", | |
| 1420 | + "status": "actif", | |
| 1421 | + "region": "Montréal" | |
| 1422 | + }, | |
| 1423 | + { | |
| 1424 | + "id": "ino_ca", | |
| 1425 | + "name": "Luqia (INO)", | |
| 1426 | + "url": "", | |
| 1427 | + "careers_url": "https://ino-ca.breezy.hr", | |
| 1428 | + "sectors": [ | |
| 1429 | + "Optique-photonique", | |
| 1430 | + "Recherche" | |
| 1431 | + ], | |
| 1432 | + "connector": "breezy", | |
| 1433 | + "status": "actif", | |
| 1434 | + "region": "Québec" | |
| 1435 | + }, | |
| 1436 | + { | |
| 1437 | + "id": "intactfc", | |
| 1438 | + "name": "Intact Corporation financière", | |
| 1439 | + "url": "", | |
| 1440 | + "careers_url": "https://intactfc.wd3.myworkdayjobs.com/Intactfc", | |
| 1441 | + "sectors": [ | |
| 1442 | + "Assurance" | |
| 1443 | + ], | |
| 1444 | + "connector": "workday", | |
| 1445 | + "status": "actif", | |
| 1446 | + "region": "Montréal" | |
| 1447 | + }, | |
| 1448 | + { | |
| 1449 | + "id": "investpsp", | |
| 1450 | + "name": "Investissements PSP", | |
| 1451 | + "url": "https://investpsp.com", | |
| 1452 | + "careers_url": "https://investpsp.wd3.myworkdayjobs.com/psp_careers", | |
| 1453 | + "sectors": [], | |
| 1454 | + "connector": "workday", | |
| 1455 | + "status": "actif", | |
| 1456 | + "region": "Montréal" | |
| 1457 | + }, | |
| 1458 | + { | |
| 1459 | + "id": "investquebec", | |
| 1460 | + "name": "Investissement Québec", | |
| 1461 | + "url": "https://investquebec.com", | |
| 1462 | + "careers_url": "https://investquebec.wd10.myworkdayjobs.com/Ext", | |
| 1463 | + "sectors": [], | |
| 1464 | + "connector": "workday", | |
| 1465 | + "status": "actif", | |
| 1466 | + "region": "Québec" | |
| 1467 | + }, | |
| 1468 | + { | |
| 1469 | + "id": "jexcelleinc", | |
| 1470 | + "name": "J'Excelle", | |
| 1471 | + "url": "", | |
| 1472 | + "careers_url": "https://jobs.smartrecruiters.com/company/JExcelleInc", | |
| 1473 | + "sectors": [ | |
| 1474 | + "Placement" | |
| 1475 | + ], | |
| 1476 | + "connector": "smartrecruiters", | |
| 1477 | + "status": "actif", | |
| 1478 | + "region": "Montréal, Laval, Gatineau" | |
| 1479 | + }, | |
| 1480 | + { | |
| 1481 | + "id": "jgrivesud", | |
| 1482 | + "name": "JG Rive-Sud (GFS)", | |
| 1483 | + "url": "https://jgfruitsetlegumes.com", | |
| 1484 | + "careers_url": "https://gfs.wd5.myworkdayjobs.com/jgrive-sud", | |
| 1485 | + "sectors": [ | |
| 1486 | + "manufacturier/commerce" | |
| 1487 | + ], | |
| 1488 | + "connector": "workday", | |
| 1489 | + "status": "actif", | |
| 1490 | + "region": "" | |
| 1491 | + }, | |
| 1492 | + { | |
| 1493 | + "id": "jobillico", | |
| 1494 | + "name": "Jobillico", | |
| 1495 | + "url": "https://www.jobillico.com", | |
| 1496 | + "careers_url": "https://www.jobillico.com/recherche-emploi", | |
| 1497 | + "sectors": [ | |
| 1498 | + "Portail", | |
| 1499 | + "Tous secteurs" | |
| 1500 | + ], | |
| 1501 | + "connector": "portail", | |
| 1502 | + "status": "actif", | |
| 1503 | + "region": "Québec (province)", | |
| 1504 | + "aggregator": true | |
| 1505 | + }, | |
| 1506 | + { | |
| 1507 | + "id": "korem", | |
| 1508 | + "name": "Korem", | |
| 1509 | + "url": "", | |
| 1510 | + "careers_url": "https://korem.bamboohr.com/careers", | |
| 1511 | + "sectors": [ | |
| 1512 | + "TI" | |
| 1513 | + ], | |
| 1514 | + "connector": "bamboohr", | |
| 1515 | + "status": "actif", | |
| 1516 | + "region": "Québec" | |
| 1517 | + }, | |
| 1518 | + { | |
| 1519 | + "id": "kpidigital", | |
| 1520 | + "name": "KPI Digital", | |
| 1521 | + "url": "", | |
| 1522 | + "careers_url": "https://kpidigital.bamboohr.com/careers", | |
| 1523 | + "sectors": [ | |
| 1524 | + "TI", | |
| 1525 | + "Données" | |
| 1526 | + ], | |
| 1527 | + "connector": "bamboohr", | |
| 1528 | + "status": "actif", | |
| 1529 | + "region": "Montréal" | |
| 1530 | + }, | |
| 1531 | + { | |
| 1532 | + "id": "kruger", | |
| 1533 | + "name": "Kruger", | |
| 1534 | + "url": "https://www.kruger.com", | |
| 1535 | + "careers_url": "https://tre.tbe.taleo.net/tre01/ats/careers/v2/jobSearch?org=KRUGER2&cws=76", | |
| 1536 | + "connector": "taleo_tbe", | |
| 1537 | + "sectors": [ | |
| 1538 | + "Pâtes et papiers", | |
| 1539 | + "Manufacturier" | |
| 1540 | + ], | |
| 1541 | + "region": "Montréal, Trois-Rivières", | |
| 1542 | + "status": "actif" | |
| 1543 | + }, | |
| 1544 | + { | |
| 1545 | + "id": "labelink", | |
| 1546 | + "name": "Produits Labelink", | |
| 1547 | + "url": "", | |
| 1548 | + "careers_url": "https://labelink.bamboohr.com/careers", | |
| 1549 | + "sectors": [ | |
| 1550 | + "Impression", | |
| 1551 | + "Manufacture" | |
| 1552 | + ], | |
| 1553 | + "connector": "bamboohr", | |
| 1554 | + "status": "actif", | |
| 1555 | + "region": "Montréal, Laval, Granby" | |
| 1556 | + }, | |
| 1557 | + { | |
| 1558 | + "id": "lamour", | |
| 1559 | + "name": "Lamour", | |
| 1560 | + "url": "", | |
| 1561 | + "careers_url": "https://apply.workable.com/lamour", | |
| 1562 | + "sectors": [ | |
| 1563 | + "Textile", | |
| 1564 | + "Manufacture" | |
| 1565 | + ], | |
| 1566 | + "connector": "workable", | |
| 1567 | + "status": "actif", | |
| 1568 | + "region": "Montréal" | |
| 1569 | + }, | |
| 1570 | + { | |
| 1571 | + "id": "lassonde", | |
| 1572 | + "name": "Industries Lassonde", | |
| 1573 | + "url": "https://www.lassonde.com", | |
| 1574 | + "careers_url": "https://www.lassonde.com/fr/emplois/", | |
| 1575 | + "sectors": [ | |
| 1576 | + "Agroalimentaire", | |
| 1577 | + "Fabrication" | |
| 1578 | + ], | |
| 1579 | + "connector": "custom", | |
| 1580 | + "status": "actif", | |
| 1581 | + "region": "Rougemont, Montréal" | |
| 1582 | + }, | |
| 1583 | + { | |
| 1584 | + "id": "levio", | |
| 1585 | + "name": "Levio", | |
| 1586 | + "url": "", | |
| 1587 | + "careers_url": "https://job-boards.greenhouse.io/levio", | |
| 1588 | + "sectors": [ | |
| 1589 | + "TI" | |
| 1590 | + ], | |
| 1591 | + "connector": "greenhouse", | |
| 1592 | + "status": "actif", | |
| 1593 | + "region": "Québec, Montréal" | |
| 1594 | + }, | |
| 1595 | + { | |
| 1596 | + "id": "lg2", | |
| 1597 | + "name": "LG2", | |
| 1598 | + "url": "", | |
| 1599 | + "careers_url": "https://lg2.recruitee.com", | |
| 1600 | + "sectors": [ | |
| 1601 | + "Publicité", | |
| 1602 | + "Création" | |
| 1603 | + ], | |
| 1604 | + "connector": "recruitee", | |
| 1605 | + "status": "actif", | |
| 1606 | + "region": "Montréal, Québec" | |
| 1607 | + }, | |
| 1608 | + { | |
| 1609 | + "id": "lidd", | |
| 1610 | + "name": "LIDD Consultants", | |
| 1611 | + "url": "", | |
| 1612 | + "careers_url": "https://apply.workable.com/lidd", | |
| 1613 | + "sectors": [ | |
| 1614 | + "Conseil", | |
| 1615 | + "Logistique" | |
| 1616 | + ], | |
| 1617 | + "connector": "workable", | |
| 1618 | + "status": "actif", | |
| 1619 | + "region": "Montréal" | |
| 1620 | + }, | |
| 1621 | + { | |
| 1622 | + "id": "lightspeedhq", | |
| 1623 | + "name": "Lightspeed Commerce", | |
| 1624 | + "url": "", | |
| 1625 | + "careers_url": "https://jobs.ashbyhq.com/lightspeedhq", | |
| 1626 | + "sectors": [ | |
| 1627 | + "TI" | |
| 1628 | + ], | |
| 1629 | + "connector": "ashby", | |
| 1630 | + "status": "actif", | |
| 1631 | + "region": "Montréal" | |
| 1632 | + }, | |
| 1633 | + { | |
| 1634 | + "id": "logisco", | |
| 1635 | + "name": "Logisco", | |
| 1636 | + "url": "https://logisco.com", | |
| 1637 | + "careers_url": "https://logisco.bamboohr.com/careers", | |
| 1638 | + "sectors": [ | |
| 1639 | + "Immobilier" | |
| 1640 | + ], | |
| 1641 | + "connector": "bamboohr", | |
| 1642 | + "status": "actif", | |
| 1643 | + "region": "" | |
| 1644 | + }, | |
| 1645 | + { | |
| 1646 | + "id": "lush", | |
| 1647 | + "name": "Lush Cosmétiques", | |
| 1648 | + "url": "", | |
| 1649 | + "careers_url": "https://job-boards.greenhouse.io/lush", | |
| 1650 | + "sectors": [ | |
| 1651 | + "Commerce de détail" | |
| 1652 | + ], | |
| 1653 | + "connector": "greenhouse", | |
| 1654 | + "status": "actif", | |
| 1655 | + "region": "Montréal, Québec" | |
| 1656 | + }, | |
| 1657 | + { | |
| 1658 | + "id": "mackenzie", | |
| 1659 | + "name": "Placements Mackenzie (Power/IGM)", | |
| 1660 | + "url": "https://www.placementsmackenzie.com", | |
| 1661 | + "careers_url": "https://careersfr-mackenzieinvestments.icims.com/jobs/search?ss=1", | |
| 1662 | + "connector": "icims", | |
| 1663 | + "sectors": [ | |
| 1664 | + "Finance" | |
| 1665 | + ], | |
| 1666 | + "region": "Montréal", | |
| 1667 | + "status": "actif" | |
| 1668 | + }, | |
| 1669 | + { | |
| 1670 | + "id": "maintainx", | |
| 1671 | + "name": "MaintainX", | |
| 1672 | + "url": "", | |
| 1673 | + "careers_url": "https://jobs.ashbyhq.com/maintainx", | |
| 1674 | + "sectors": [ | |
| 1675 | + "TI", | |
| 1676 | + "SaaS" | |
| 1677 | + ], | |
| 1678 | + "connector": "ashby", | |
| 1679 | + "status": "actif", | |
| 1680 | + "region": "Montréal" | |
| 1681 | + }, | |
| 1682 | + { | |
| 1683 | + "id": "manulife", | |
| 1684 | + "name": "Manuvie", | |
| 1685 | + "url": "", | |
| 1686 | + "careers_url": "https://manulife.wd3.myworkdayjobs.com/MFCJH_Jobs", | |
| 1687 | + "sectors": [ | |
| 1688 | + "Assurance", | |
| 1689 | + "Finance" | |
| 1690 | + ], | |
| 1691 | + "connector": "workday", | |
| 1692 | + "status": "actif", | |
| 1693 | + "region": "Montréal" | |
| 1694 | + }, | |
| 1695 | + { | |
| 1696 | + "id": "mattelinc", | |
| 1697 | + "name": "Mattel (Mega Bloks)", | |
| 1698 | + "url": "", | |
| 1699 | + "careers_url": "https://jobs.smartrecruiters.com/company/MattelInc", | |
| 1700 | + "sectors": [ | |
| 1701 | + "Jouets", | |
| 1702 | + "Manufacture" | |
| 1703 | + ], | |
| 1704 | + "connector": "smartrecruiters", | |
| 1705 | + "status": "actif", | |
| 1706 | + "region": "Montréal" | |
| 1707 | + }, | |
| 1708 | + { | |
| 1709 | + "id": "mccarthy_tetrault", | |
| 1710 | + "name": "McCarthy Tétrault", | |
| 1711 | + "url": "https://www.mccarthy.ca", | |
| 1712 | + "careers_url": "https://careers-mccarthyca.icims.com/jobs/search?ss=1", | |
| 1713 | + "sectors": [ | |
| 1714 | + "Juridique", | |
| 1715 | + "Services professionnels" | |
| 1716 | + ], | |
| 1717 | + "connector": "icims", | |
| 1718 | + "status": "actif", | |
| 1719 | + "region": "Montréal, Québec" | |
| 1720 | + }, | |
| 1721 | + { | |
| 1722 | + "id": "mcgill", | |
| 1723 | + "name": "Université McGill", | |
| 1724 | + "url": "https://www.mcgill.ca", | |
| 1725 | + "careers_url": "https://mcgill.wd3.myworkdayjobs.com/McGill_Careers", | |
| 1726 | + "sectors": [ | |
| 1727 | + "Éducation", | |
| 1728 | + "Recherche", | |
| 1729 | + "Administration" | |
| 1730 | + ], | |
| 1731 | + "connector": "workday", | |
| 1732 | + "status": "actif", | |
| 1733 | + "region": "Montréal" | |
| 1734 | + }, | |
| 1735 | + { | |
| 1736 | + "id": "mckesson", | |
| 1737 | + "name": "McKesson Canada", | |
| 1738 | + "url": "", | |
| 1739 | + "careers_url": "https://mckesson.wd3.myworkdayjobs.com/External_Careers", | |
| 1740 | + "sectors": [ | |
| 1741 | + "Pharmaceutique", | |
| 1742 | + "Distribution" | |
| 1743 | + ], | |
| 1744 | + "connector": "workday", | |
| 1745 | + "status": "actif", | |
| 1746 | + "region": "Montréal" | |
| 1747 | + }, | |
| 1748 | + { | |
| 1749 | + "id": "medfar", | |
| 1750 | + "name": "MEDFAR Solutions Cliniques", | |
| 1751 | + "url": "", | |
| 1752 | + "careers_url": "https://jobs.smartrecruiters.com/company/Medfar", | |
| 1753 | + "sectors": [ | |
| 1754 | + "TI", | |
| 1755 | + "Santé" | |
| 1756 | + ], | |
| 1757 | + "connector": "smartrecruiters", | |
| 1758 | + "status": "actif", | |
| 1759 | + "region": "Montréal" | |
| 1760 | + }, | |
| 1761 | + { | |
| 1762 | + "id": "medialo", | |
| 1763 | + "name": "Médialo", | |
| 1764 | + "url": "", | |
| 1765 | + "careers_url": "https://medialo.recruitee.com", | |
| 1766 | + "sectors": [ | |
| 1767 | + "Médias" | |
| 1768 | + ], | |
| 1769 | + "connector": "recruitee", | |
| 1770 | + "status": "actif", | |
| 1771 | + "region": "Mont-Laurier, Terrebonne" | |
| 1772 | + }, | |
| 1773 | + { | |
| 1774 | + "id": "messer_canada", | |
| 1775 | + "name": "Messer Canada", | |
| 1776 | + "url": "https://www.messer-ca.com", | |
| 1777 | + "careers_url": "https://recruiting.ultipro.com/MES1005MESR/JobBoard/dbd63926-d756-486f-a254-b2a6ede1d26e", | |
| 1778 | + "sectors": [ | |
| 1779 | + "Gaz industriels", | |
| 1780 | + "Industrie" | |
| 1781 | + ], | |
| 1782 | + "connector": "ultipro", | |
| 1783 | + "status": "actif", | |
| 1784 | + "region": "Montréal, Québec, Saint-Georges" | |
| 1785 | + }, | |
| 1786 | + { | |
| 1787 | + "id": "microhabitat", | |
| 1788 | + "name": "MicroHabitat", | |
| 1789 | + "url": "", | |
| 1790 | + "careers_url": "https://microhabitat.breezy.hr", | |
| 1791 | + "sectors": [ | |
| 1792 | + "Agriculture urbaine" | |
| 1793 | + ], | |
| 1794 | + "connector": "breezy", | |
| 1795 | + "status": "actif", | |
| 1796 | + "region": "Montréal, Québec" | |
| 1797 | + }, | |
| 1798 | + { | |
| 1799 | + "id": "mila_2", | |
| 1800 | + "name": "Mila — Institut québécois d'IA", | |
| 1801 | + "url": "https://mila.quebec", | |
| 1802 | + "careers_url": "https://apply.workable.com/mila-2", | |
| 1803 | + "sectors": [], | |
| 1804 | + "connector": "workable", | |
| 1805 | + "status": "actif", | |
| 1806 | + "region": "Montréal" | |
| 1807 | + }, | |
| 1808 | + { | |
| 1809 | + "id": "mirego", | |
| 1810 | + "name": "Mirego", | |
| 1811 | + "url": "", | |
| 1812 | + "careers_url": "https://jobs.lever.co/mirego", | |
| 1813 | + "sectors": [ | |
| 1814 | + "TI" | |
| 1815 | + ], | |
| 1816 | + "connector": "lever", | |
| 1817 | + "status": "actif", | |
| 1818 | + "region": "Québec, Montréal" | |
| 1819 | + }, | |
| 1820 | + { | |
| 1821 | + "id": "mistplay", | |
| 1822 | + "name": "Mistplay", | |
| 1823 | + "url": "https://www.mistplay.com", | |
| 1824 | + "careers_url": "https://jobs.lever.co/mistplay", | |
| 1825 | + "sectors": [ | |
| 1826 | + "TI", | |
| 1827 | + "Jeu mobile" | |
| 1828 | + ], | |
| 1829 | + "connector": "lever", | |
| 1830 | + "status": "actif", | |
| 1831 | + "region": "Montréal" | |
| 1832 | + }, | |
| 1833 | + { | |
| 1834 | + "id": "mistral_ai", | |
| 1835 | + "name": "Mistral AI", | |
| 1836 | + "url": "", | |
| 1837 | + "careers_url": "https://jobs.ashbyhq.com/mistral.ai", | |
| 1838 | + "sectors": [ | |
| 1839 | + "TI", | |
| 1840 | + "IA" | |
| 1841 | + ], | |
| 1842 | + "connector": "ashby", | |
| 1843 | + "status": "actif", | |
| 1844 | + "region": "Montréal" | |
| 1845 | + }, | |
| 1846 | + { | |
| 1847 | + "id": "mitacs", | |
| 1848 | + "name": "Mitacs", | |
| 1849 | + "url": "", | |
| 1850 | + "careers_url": "https://mitacs.bamboohr.com/careers", | |
| 1851 | + "sectors": [ | |
| 1852 | + "Recherche", | |
| 1853 | + "OBNL" | |
| 1854 | + ], | |
| 1855 | + "connector": "bamboohr", | |
| 1856 | + "status": "actif", | |
| 1857 | + "region": "Montréal" | |
| 1858 | + }, | |
| 1859 | + { | |
| 1860 | + "id": "mitsubishi_hc_capital", | |
| 1861 | + "name": "Mitsubishi HC Capital Canada", | |
| 1862 | + "url": "https://www.mhccna.com", | |
| 1863 | + "careers_url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=b3ef4f03-f8ff-4ded-80c8-6dd5c5a224f7&ccId=9200144510729_2&lang=fr_CA", | |
| 1864 | + "sectors": [ | |
| 1865 | + "Finance", | |
| 1866 | + "Financement commercial" | |
| 1867 | + ], | |
| 1868 | + "connector": "adp", | |
| 1869 | + "status": "actif", | |
| 1870 | + "region": "Laval, Trois-Rivières" | |
| 1871 | + }, | |
| 1872 | + { | |
| 1873 | + "id": "msi_gestion", | |
| 1874 | + "name": "MSI Gestion immobilière", | |
| 1875 | + "url": "https://www.msimmobiliers.com", | |
| 1876 | + "careers_url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=47d4e792-26e5-471c-92ac-73c60131bab8&ccId=19000101_000001&lang=fr_CA", | |
| 1877 | + "sectors": [ | |
| 1878 | + "Immobilier", | |
| 1879 | + "Gestion immobilière" | |
| 1880 | + ], | |
| 1881 | + "connector": "adp", | |
| 1882 | + "status": "actif", | |
| 1883 | + "region": "Montréal" | |
| 1884 | + }, | |
| 1885 | + { | |
| 1886 | + "id": "mthreerecruitingportal", | |
| 1887 | + "name": "mthree", | |
| 1888 | + "url": "", | |
| 1889 | + "careers_url": "https://job-boards.greenhouse.io/mthreerecruitingportal", | |
| 1890 | + "sectors": [ | |
| 1891 | + "TI", | |
| 1892 | + "Placement" | |
| 1893 | + ], | |
| 1894 | + "connector": "greenhouse", | |
| 1895 | + "status": "actif", | |
| 1896 | + "region": "Montréal" | |
| 1897 | + }, | |
| 1898 | + { | |
| 1899 | + "id": "mxo", | |
| 1900 | + "name": "MXO", | |
| 1901 | + "url": "https://mxoconseil.com", | |
| 1902 | + "careers_url": "https://mxo.bamboohr.com/careers", | |
| 1903 | + "sectors": [ | |
| 1904 | + "manufacturier/commerce" | |
| 1905 | + ], | |
| 1906 | + "connector": "bamboohr", | |
| 1907 | + "status": "actif", | |
| 1908 | + "region": "" | |
| 1909 | + }, | |
| 1910 | + { | |
| 1911 | + "id": "national", | |
| 1912 | + "name": "NATIONAL", | |
| 1913 | + "url": "", | |
| 1914 | + "careers_url": "https://job-boards.greenhouse.io/national", | |
| 1915 | + "sectors": [ | |
| 1916 | + "Relations publiques" | |
| 1917 | + ], | |
| 1918 | + "connector": "greenhouse", | |
| 1919 | + "status": "actif", | |
| 1920 | + "region": "Montréal" | |
| 1921 | + }, | |
| 1922 | + { | |
| 1923 | + "id": "nexapp", | |
| 1924 | + "name": "Nexapp", | |
| 1925 | + "url": "", | |
| 1926 | + "careers_url": "https://nexapp.bamboohr.com/careers", | |
| 1927 | + "sectors": [ | |
| 1928 | + "TI", | |
| 1929 | + "Web" | |
| 1930 | + ], | |
| 1931 | + "connector": "bamboohr", | |
| 1932 | + "status": "actif", | |
| 1933 | + "region": "Québec" | |
| 1934 | + }, | |
| 1935 | + { | |
| 1936 | + "id": "no_saint", | |
| 1937 | + "name": "No Saint", | |
| 1938 | + "url": "", | |
| 1939 | + "careers_url": "https://jobs.ashbyhq.com/no-saint", | |
| 1940 | + "sectors": [ | |
| 1941 | + "Création" | |
| 1942 | + ], | |
| 1943 | + "connector": "ashby", | |
| 1944 | + "status": "actif", | |
| 1945 | + "region": "Montréal" | |
| 1946 | + }, | |
| 1947 | + { | |
| 1948 | + "id": "nomic", | |
| 1949 | + "name": "Nomic Bio", | |
| 1950 | + "url": "", | |
| 1951 | + "careers_url": "https://jobs.ashbyhq.com/nomic", | |
| 1952 | + "sectors": [ | |
| 1953 | + "Biotechnologie" | |
| 1954 | + ], | |
| 1955 | + "connector": "ashby", | |
| 1956 | + "status": "actif", | |
| 1957 | + "region": "Montréal" | |
| 1958 | + }, | |
| 1959 | + { | |
| 1960 | + "id": "nora_pharma", | |
| 1961 | + "name": "Nora Pharma", | |
| 1962 | + "url": "", | |
| 1963 | + "careers_url": "https://nora-pharma.breezy.hr", | |
| 1964 | + "sectors": [ | |
| 1965 | + "Pharmaceutique" | |
| 1966 | + ], | |
| 1967 | + "connector": "breezy", | |
| 1968 | + "status": "actif", | |
| 1969 | + "region": "Laval, Montréal, Granby" | |
| 1970 | + }, | |
| 1971 | + { | |
| 1972 | + "id": "nortera", | |
| 1973 | + "name": "Nortera", | |
| 1974 | + "url": "https://norterafoods.com", | |
| 1975 | + "careers_url": "https://recruiting.ultipro.ca/NOR5100NOFD/JobBoard/e3ce2e8a-b8fc-42c9-97cf-ea17f4d5dd1d/", | |
| 1976 | + "connector": "ultipro", | |
| 1977 | + "sectors": [ | |
| 1978 | + "Agroalimentaire", | |
| 1979 | + "Manufacturier" | |
| 1980 | + ], | |
| 1981 | + "region": "Montérégie, Brossard", | |
| 1982 | + "status": "actif" | |
| 1983 | + }, | |
| 1984 | + { | |
| 1985 | + "id": "northwestrubber", | |
| 1986 | + "name": "North West Rubber", | |
| 1987 | + "url": "", | |
| 1988 | + "careers_url": "https://northwestrubber.bamboohr.com/careers", | |
| 1989 | + "sectors": [ | |
| 1990 | + "Manufacture" | |
| 1991 | + ], | |
| 1992 | + "connector": "bamboohr", | |
| 1993 | + "status": "actif", | |
| 1994 | + "region": "Sherbrooke" | |
| 1995 | + }, | |
| 1996 | + { | |
| 1997 | + "id": "novipro", | |
| 1998 | + "name": "NOVIPRO", | |
| 1999 | + "url": "", | |
| 2000 | + "careers_url": "https://novipro.breezy.hr", | |
| 2001 | + "sectors": [ | |
| 2002 | + "TI" | |
| 2003 | + ], | |
| 2004 | + "connector": "breezy", | |
| 2005 | + "status": "actif", | |
| 2006 | + "region": "Montréal, Longueuil" | |
| 2007 | + }, | |
| 2008 | + { | |
| 2009 | + "id": "nuovophotography", | |
| 2010 | + "name": "Nuovo Photography", | |
| 2011 | + "url": "", | |
| 2012 | + "careers_url": "https://apply.workable.com/nuovophotography", | |
| 2013 | + "sectors": [ | |
| 2014 | + "Photographie" | |
| 2015 | + ], | |
| 2016 | + "connector": "workable", | |
| 2017 | + "status": "actif", | |
| 2018 | + "region": "Montréal" | |
| 2019 | + }, | |
| 2020 | + { | |
| 2021 | + "id": "omni_hotels_gestion", | |
| 2022 | + "name": "Omni Hôtel Mont-Royal", | |
| 2023 | + "url": "https://www.omnihotels.com/fr/hotels/montreal-mont-royal", | |
| 2024 | + "careers_url": "https://externalmanager-omnihotels.icims.com/jobs/search?ss=1", | |
| 2025 | + "sectors": [ | |
| 2026 | + "Hôtellerie", | |
| 2027 | + "Gestion" | |
| 2028 | + ], | |
| 2029 | + "connector": "icims", | |
| 2030 | + "status": "actif", | |
| 2031 | + "region": "Montréal" | |
| 2032 | + }, | |
| 2033 | + { | |
| 2034 | + "id": "omni_hotels_horaire", | |
| 2035 | + "name": "Omni Hôtel Mont-Royal", | |
| 2036 | + "url": "https://www.omnihotels.com/fr/hotels/montreal-mont-royal", | |
| 2037 | + "careers_url": "https://externalhourly-omnihotels.icims.com/jobs/search?ss=1", | |
| 2038 | + "sectors": [ | |
| 2039 | + "Hôtellerie", | |
| 2040 | + "Restauration" | |
| 2041 | + ], | |
| 2042 | + "connector": "icims", | |
| 2043 | + "status": "actif", | |
| 2044 | + "region": "Montréal" | |
| 2045 | + }, | |
| 2046 | + { | |
| 2047 | + "id": "onrunning", | |
| 2048 | + "name": "On Running", | |
| 2049 | + "url": "", | |
| 2050 | + "careers_url": "https://job-boards.greenhouse.io/onrunning", | |
| 2051 | + "sectors": [ | |
| 2052 | + "Commerce de détail", | |
| 2053 | + "Sport" | |
| 2054 | + ], | |
| 2055 | + "connector": "greenhouse", | |
| 2056 | + "status": "actif", | |
| 2057 | + "region": "Montréal" | |
| 2058 | + }, | |
| 2059 | + { | |
| 2060 | + "id": "opalrt", | |
| 2061 | + "name": "OPAL-RT Technologies", | |
| 2062 | + "url": "", | |
| 2063 | + "careers_url": "https://opalrt.bamboohr.com/careers", | |
| 2064 | + "sectors": [ | |
| 2065 | + "TI", | |
| 2066 | + "Ingénierie" | |
| 2067 | + ], | |
| 2068 | + "connector": "bamboohr", | |
| 2069 | + "status": "actif", | |
| 2070 | + "region": "Montréal" | |
| 2071 | + }, | |
| 2072 | + { | |
| 2073 | + "id": "osedea", | |
| 2074 | + "name": "OSEDEA", | |
| 2075 | + "url": "", | |
| 2076 | + "careers_url": "https://jobs.lever.co/osedea", | |
| 2077 | + "sectors": [ | |
| 2078 | + "TI", | |
| 2079 | + "Web" | |
| 2080 | + ], | |
| 2081 | + "connector": "lever", | |
| 2082 | + "status": "actif", | |
| 2083 | + "region": "Montréal" | |
| 2084 | + }, | |
| 2085 | + { | |
| 2086 | + "id": "osgoode_properties", | |
| 2087 | + "name": "Osgoode Properties", | |
| 2088 | + "url": "https://www.osgoodeproperties.com", | |
| 2089 | + "careers_url": "https://workforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=c6a2e782-c971-4a6d-9a63-1365f5ce7d21&ccId=19000101_000001&lang=fr_CA", | |
| 2090 | + "connector": "adp", | |
| 2091 | + "sectors": [ | |
| 2092 | + "Immobilier" | |
| 2093 | + ], | |
| 2094 | + "region": "Gatineau", | |
| 2095 | + "status": "actif" | |
| 2096 | + }, | |
| 2097 | + { | |
| 2098 | + "id": "ott", | |
| 2099 | + "name": "OTT Financial", | |
| 2100 | + "url": "", | |
| 2101 | + "careers_url": "https://ott.bamboohr.com/careers", | |
| 2102 | + "sectors": [ | |
| 2103 | + "Finance" | |
| 2104 | + ], | |
| 2105 | + "connector": "bamboohr", | |
| 2106 | + "status": "actif", | |
| 2107 | + "region": "Montréal" | |
| 2108 | + }, | |
| 2109 | + { | |
| 2110 | + "id": "peoplecanfly", | |
| 2111 | + "name": "People Can Fly", | |
| 2112 | + "url": "", | |
| 2113 | + "careers_url": "https://jobs.smartrecruiters.com/company/PeopleCanFly", | |
| 2114 | + "sectors": [ | |
| 2115 | + "Jeux vidéo" | |
| 2116 | + ], | |
| 2117 | + "connector": "smartrecruiters", | |
| 2118 | + "status": "actif", | |
| 2119 | + "region": "Montréal" | |
| 2120 | + }, | |
| 2121 | + { | |
| 2122 | + "id": "petalmd", | |
| 2123 | + "name": "Petal", | |
| 2124 | + "url": "", | |
| 2125 | + "careers_url": "https://petalmd.recruitee.com", | |
| 2126 | + "sectors": [ | |
| 2127 | + "TI", | |
| 2128 | + "Santé" | |
| 2129 | + ], | |
| 2130 | + "connector": "recruitee", | |
| 2131 | + "status": "actif", | |
| 2132 | + "region": "Montréal, Québec" | |
| 2133 | + }, | |
| 2134 | + { | |
| 2135 | + "id": "pfizer", | |
| 2136 | + "name": "Pfizer Canada", | |
| 2137 | + "url": "", | |
| 2138 | + "careers_url": "https://pfizer.wd1.myworkdayjobs.com/PfizerCareers", | |
| 2139 | + "sectors": [ | |
| 2140 | + "Pharmaceutique" | |
| 2141 | + ], | |
| 2142 | + "connector": "workday", | |
| 2143 | + "status": "actif", | |
| 2144 | + "region": "Kirkland" | |
| 2145 | + }, | |
| 2146 | + { | |
| 2147 | + "id": "playmind", | |
| 2148 | + "name": "Playmind", | |
| 2149 | + "url": "", | |
| 2150 | + "careers_url": "https://jobs.smartrecruiters.com/company/playmind", | |
| 2151 | + "sectors": [ | |
| 2152 | + "Jeux vidéo" | |
| 2153 | + ], | |
| 2154 | + "connector": "smartrecruiters", | |
| 2155 | + "status": "actif", | |
| 2156 | + "region": "Montréal" | |
| 2157 | + }, | |
| 2158 | + { | |
| 2159 | + "id": "plusgrade", | |
| 2160 | + "name": "Plusgrade", | |
| 2161 | + "url": "https://plusgrade.com", | |
| 2162 | + "careers_url": "https://plusgrade.wd10.myworkdayjobs.com/Plusgrade_External_Site", | |
| 2163 | + "sectors": [], | |
| 2164 | + "connector": "workday", | |
| 2165 | + "status": "actif", | |
| 2166 | + "region": "Montréal" | |
| 2167 | + }, | |
| 2168 | + { | |
| 2169 | + "id": "poka", | |
| 2170 | + "name": "Poka", | |
| 2171 | + "url": "https://www.poka.io", | |
| 2172 | + "careers_url": "https://job-boards.greenhouse.io/poka", | |
| 2173 | + "sectors": [ | |
| 2174 | + "TI", | |
| 2175 | + "SaaS manufacturier" | |
| 2176 | + ], | |
| 2177 | + "connector": "greenhouse", | |
| 2178 | + "status": "actif", | |
| 2179 | + "region": "Québec" | |
| 2180 | + }, | |
| 2181 | + { | |
| 2182 | + "id": "portagecybertech", | |
| 2183 | + "name": "Portage CyberTech", | |
| 2184 | + "url": "", | |
| 2185 | + "careers_url": "https://portagecybertech.bamboohr.com/careers", | |
| 2186 | + "sectors": [ | |
| 2187 | + "TI", | |
| 2188 | + "Cybersécurité" | |
| 2189 | + ], | |
| 2190 | + "connector": "bamboohr", | |
| 2191 | + "status": "actif", | |
| 2192 | + "region": "Gatineau, Montréal" | |
| 2193 | + }, | |
| 2194 | + { | |
| 2195 | + "id": "potloc", | |
| 2196 | + "name": "Potloc", | |
| 2197 | + "url": "https://www.potloc.com", | |
| 2198 | + "careers_url": "https://jobs.lever.co/Potloc", | |
| 2199 | + "sectors": [ | |
| 2200 | + "TI", | |
| 2201 | + "Études de marché" | |
| 2202 | + ], | |
| 2203 | + "connector": "lever", | |
| 2204 | + "status": "actif", | |
| 2205 | + "region": "Montréal" | |
| 2206 | + }, | |
| 2207 | + { | |
| 2208 | + "id": "pouletrouge", | |
| 2209 | + "name": "Poulet Rouge", | |
| 2210 | + "url": "https://poulet-rouge.ca", | |
| 2211 | + "careers_url": "https://pouletrouge.bamboohr.com/careers", | |
| 2212 | + "sectors": [ | |
| 2213 | + "restauration" | |
| 2214 | + ], | |
| 2215 | + "connector": "bamboohr", | |
| 2216 | + "status": "actif", | |
| 2217 | + "region": "Montréal" | |
| 2218 | + }, | |
| 2219 | + { | |
| 2220 | + "id": "produits_kruger", | |
| 2221 | + "name": "Produits Kruger", | |
| 2222 | + "url": "https://www.produitskruger.ca", | |
| 2223 | + "careers_url": "https://tre.tbe.taleo.net/tre01/ats/careers/v2/jobSearch?org=KRUGER2&cws=78", | |
| 2224 | + "connector": "taleo_tbe", | |
| 2225 | + "sectors": [ | |
| 2226 | + "Manufacturier", | |
| 2227 | + "Biens de consommation" | |
| 2228 | + ], | |
| 2229 | + "region": "Gatineau, Crabtree", | |
| 2230 | + "status": "actif" | |
| 2231 | + }, | |
| 2232 | + { | |
| 2233 | + "id": "promutuel", | |
| 2234 | + "name": "Promutuel Assurance", | |
| 2235 | + "url": "https://promutuelassurance.ca", | |
| 2236 | + "careers_url": "https://promutuel.wd3.myworkdayjobs.com/promutuel_carrieres", | |
| 2237 | + "sectors": [], | |
| 2238 | + "connector": "workday", | |
| 2239 | + "status": "actif", | |
| 2240 | + "region": "Québec" | |
| 2241 | + }, | |
| 2242 | + { | |
| 2243 | + "id": "qsl", | |
| 2244 | + "name": "QSL", | |
| 2245 | + "url": "https://qsl.com", | |
| 2246 | + "careers_url": "https://jobs.smartrecruiters.com/company/qsl", | |
| 2247 | + "sectors": [], | |
| 2248 | + "connector": "smartrecruiters", | |
| 2249 | + "status": "actif", | |
| 2250 | + "region": "Québec" | |
| 2251 | + }, | |
| 2252 | + { | |
| 2253 | + "id": "rcgt", | |
| 2254 | + "name": "Raymond Chabot Grant Thornton", | |
| 2255 | + "url": "https://rcgt.com", | |
| 2256 | + "careers_url": "https://rcgt.wd3.myworkdayjobs.com/External", | |
| 2257 | + "sectors": [], | |
| 2258 | + "connector": "workday", | |
| 2259 | + "status": "actif", | |
| 2260 | + "region": "Montréal" | |
| 2261 | + }, | |
| 2262 | + { | |
| 2263 | + "id": "reitmanscanadalteltd", | |
| 2264 | + "name": "Reitmans", | |
| 2265 | + "url": "", | |
| 2266 | + "careers_url": "https://jobs.smartrecruiters.com/company/ReitmansCanadaLteLtd", | |
| 2267 | + "sectors": [ | |
| 2268 | + "Commerce de détail", | |
| 2269 | + "Mode" | |
| 2270 | + ], | |
| 2271 | + "connector": "smartrecruiters", | |
| 2272 | + "status": "actif", | |
| 2273 | + "region": "Montréal, Québec, Laval" | |
| 2274 | + }, | |
| 2275 | + { | |
| 2276 | + "id": "reseau_mieux_etre", | |
| 2277 | + "name": "Réseau Mieux-Être", | |
| 2278 | + "url": "", | |
| 2279 | + "careers_url": "https://reseau-mieux-etre.breezy.hr", | |
| 2280 | + "sectors": [ | |
| 2281 | + "Santé" | |
| 2282 | + ], | |
| 2283 | + "connector": "breezy", | |
| 2284 | + "status": "actif", | |
| 2285 | + "region": "Montréal" | |
| 2286 | + }, | |
| 2287 | + { | |
| 2288 | + "id": "rethinkcanada", | |
| 2289 | + "name": "Rethink", | |
| 2290 | + "url": "", | |
| 2291 | + "careers_url": "https://rethinkcanada.bamboohr.com/careers", | |
| 2292 | + "sectors": [ | |
| 2293 | + "Publicité" | |
| 2294 | + ], | |
| 2295 | + "connector": "bamboohr", | |
| 2296 | + "status": "actif", | |
| 2297 | + "region": "Montréal" | |
| 2298 | + }, | |
| 2299 | + { | |
| 2300 | + "id": "riotinto", | |
| 2301 | + "name": "Rio Tinto", | |
| 2302 | + "url": "", | |
| 2303 | + "careers_url": "https://riotinto.wd3.myworkdayjobs.com/riotinto_careers", | |
| 2304 | + "sectors": [ | |
| 2305 | + "Mines" | |
| 2306 | + ], | |
| 2307 | + "connector": "workday", | |
| 2308 | + "status": "actif", | |
| 2309 | + "region": "Saguenay, Montréal" | |
| 2310 | + }, | |
| 2311 | + { | |
| 2312 | + "id": "robotiq", | |
| 2313 | + "name": "Robotiq", | |
| 2314 | + "url": "", | |
| 2315 | + "careers_url": "https://robotiq.bamboohr.com/careers", | |
| 2316 | + "sectors": [ | |
| 2317 | + "Robotique", | |
| 2318 | + "Manufacture" | |
| 2319 | + ], | |
| 2320 | + "connector": "bamboohr", | |
| 2321 | + "status": "actif", | |
| 2322 | + "region": "Lévis" | |
| 2323 | + }, | |
| 2324 | + { | |
| 2325 | + "id": "rodeofx", | |
| 2326 | + "name": "Rodeo FX", | |
| 2327 | + "url": "", | |
| 2328 | + "careers_url": "https://jobs.smartrecruiters.com/company/RodeoFX", | |
| 2329 | + "sectors": [ | |
| 2330 | + "Effets visuels", | |
| 2331 | + "Création" | |
| 2332 | + ], | |
| 2333 | + "connector": "smartrecruiters", | |
| 2334 | + "status": "actif", | |
| 2335 | + "region": "Montréal, Québec" | |
| 2336 | + }, | |
| 2337 | + { | |
| 2338 | + "id": "rtc_quebec", | |
| 2339 | + "name": "Réseau de transport de la Capitale", | |
| 2340 | + "url": "https://www.rtcquebec.ca", | |
| 2341 | + "careers_url": "https://rtc.njoyn.com/CGI/xweb/xweb.asp?clid=23009&page=joblisting&lang=2", | |
| 2342 | + "sectors": [ | |
| 2343 | + "Transport collectif", | |
| 2344 | + "Secteur public" | |
| 2345 | + ], | |
| 2346 | + "connector": "njoyn", | |
| 2347 | + "status": "actif", | |
| 2348 | + "region": "Québec" | |
| 2349 | + }, | |
| 2350 | + { | |
| 2351 | + "id": "samsara", | |
| 2352 | + "name": "Samsara", | |
| 2353 | + "url": "", | |
| 2354 | + "careers_url": "https://job-boards.greenhouse.io/samsara", | |
| 2355 | + "sectors": [ | |
| 2356 | + "TI", | |
| 2357 | + "IoT" | |
| 2358 | + ], | |
| 2359 | + "connector": "greenhouse", | |
| 2360 | + "status": "actif", | |
| 2361 | + "region": "Montréal" | |
| 2362 | + }, | |
| 2363 | + { | |
| 2364 | + "id": "sante_montreal", | |
| 2365 | + "name": "Santé Québec — Montréal", | |
| 2366 | + "url": "https://santemontreal.ca", | |
| 2367 | + "careers_url": "https://emplois.santemontreal.qc.ca/CL3/xweb/xweb.asp?clid=54327&page=joblisting&lang=2", | |
| 2368 | + "sectors": [ | |
| 2369 | + "Santé", | |
| 2370 | + "Services sociaux", | |
| 2371 | + "Secteur public" | |
| 2372 | + ], | |
| 2373 | + "connector": "njoyn", | |
| 2374 | + "status": "actif", | |
| 2375 | + "region": "Montréal" | |
| 2376 | + }, | |
| 2377 | + { | |
| 2378 | + "id": "sante_quebec", | |
| 2379 | + "name": "Santé Québec", | |
| 2380 | + "url": "https://sante.quebec", | |
| 2381 | + "careers_url": "https://emplois.sante.quebec", | |
| 2382 | + "sectors": [ | |
| 2383 | + "Santé", | |
| 2384 | + "Secteur public", | |
| 2385 | + "Administration" | |
| 2386 | + ], | |
| 2387 | + "connector": "digitalrecruiters", | |
| 2388 | + "status": "actif", | |
| 2389 | + "region": "Montréal, Québec" | |
| 2390 | + }, | |
| 2391 | + { | |
| 2392 | + "id": "saputo", | |
| 2393 | + "name": "Saputo", | |
| 2394 | + "url": "https://www.saputo.com", | |
| 2395 | + "careers_url": "https://saputo.wd5.myworkdayjobs.com/Saputo_External_Careers", | |
| 2396 | + "sectors": [ | |
| 2397 | + "Agroalimentaire", | |
| 2398 | + "Production" | |
| 2399 | + ], | |
| 2400 | + "connector": "workday", | |
| 2401 | + "status": "actif", | |
| 2402 | + "region": "Montréal / province" | |
| 2403 | + }, | |
| 2404 | + { | |
| 2405 | + "id": "scalia", | |
| 2406 | + "name": "Propriétés Scalia", | |
| 2407 | + "url": "", | |
| 2408 | + "careers_url": "https://scalia.bamboohr.com/careers", | |
| 2409 | + "sectors": [ | |
| 2410 | + "Immobilier" | |
| 2411 | + ], | |
| 2412 | + "connector": "bamboohr", | |
| 2413 | + "status": "actif", | |
| 2414 | + "region": "Montréal, Anjou" | |
| 2415 | + }, | |
| 2416 | + { | |
| 2417 | + "id": "scottsmiraclegro", | |
| 2418 | + "name": "Scotts Canada (Fafard)", | |
| 2419 | + "url": "https://scottsmiraclegro.com", | |
| 2420 | + "careers_url": "https://scottsmiraclegro.wd5.myworkdayjobs.com/SMGExternal", | |
| 2421 | + "sectors": [ | |
| 2422 | + "manufacturier/commerce" | |
| 2423 | + ], | |
| 2424 | + "connector": "workday", | |
| 2425 | + "status": "actif", | |
| 2426 | + "region": "" | |
| 2427 | + }, | |
| 2428 | + { | |
| 2429 | + "id": "sepaq", | |
| 2430 | + "name": "Sépaq", | |
| 2431 | + "url": "https://www.sepaq.com", | |
| 2432 | + "careers_url": "https://tre.tbe.taleo.net/tre01/ats/careers/v2/jobSearch?org=SEPAQ&cws=37", | |
| 2433 | + "connector": "taleo_tbe", | |
| 2434 | + "sectors": [ | |
| 2435 | + "Tourisme", | |
| 2436 | + "Plein air", | |
| 2437 | + "Secteur public" | |
| 2438 | + ], | |
| 2439 | + "region": "Québec (province)", | |
| 2440 | + "status": "actif" | |
| 2441 | + }, | |
| 2442 | + { | |
| 2443 | + "id": "servicenow", | |
| 2444 | + "name": "ServiceNow", | |
| 2445 | + "url": "", | |
| 2446 | + "careers_url": "https://jobs.smartrecruiters.com/company/ServiceNow", | |
| 2447 | + "sectors": [ | |
| 2448 | + "TI", | |
| 2449 | + "SaaS" | |
| 2450 | + ], | |
| 2451 | + "connector": "smartrecruiters", | |
| 2452 | + "status": "actif", | |
| 2453 | + "region": "Montréal" | |
| 2454 | + }, | |
| 2455 | + { | |
| 2456 | + "id": "siainnovationsinc", | |
| 2457 | + "name": "SIA Innovations", | |
| 2458 | + "url": "", | |
| 2459 | + "careers_url": "https://job-boards.greenhouse.io/siainnovationsinc", | |
| 2460 | + "sectors": [ | |
| 2461 | + "TI" | |
| 2462 | + ], | |
| 2463 | + "connector": "greenhouse", | |
| 2464 | + "status": "actif", | |
| 2465 | + "region": "Montréal" | |
| 2466 | + }, | |
| 2467 | + { | |
| 2468 | + "id": "sideinc", | |
| 2469 | + "name": "Side (PTW)", | |
| 2470 | + "url": "", | |
| 2471 | + "careers_url": "https://apply.workable.com/sideinc", | |
| 2472 | + "sectors": [ | |
| 2473 | + "Jeux vidéo" | |
| 2474 | + ], | |
| 2475 | + "connector": "workable", | |
| 2476 | + "status": "actif", | |
| 2477 | + "region": "Montréal, Québec" | |
| 2478 | + }, | |
| 2479 | + { | |
| 2480 | + "id": "sidlee", | |
| 2481 | + "name": "Sid Lee", | |
| 2482 | + "url": "", | |
| 2483 | + "careers_url": "https://job-boards.greenhouse.io/sidlee", | |
| 2484 | + "sectors": [ | |
| 2485 | + "Marketing", | |
| 2486 | + "Création" | |
| 2487 | + ], | |
| 2488 | + "connector": "greenhouse", | |
| 2489 | + "status": "actif", | |
| 2490 | + "region": "Montréal" | |
| 2491 | + }, | |
| 2492 | + { | |
| 2493 | + "id": "sleeman", | |
| 2494 | + "name": "Brasseries Sleeman (Unibroue)", | |
| 2495 | + "url": "https://unibroue.com", | |
| 2496 | + "careers_url": "https://sleeman.wd3.myworkdayjobs.com/SBL", | |
| 2497 | + "sectors": [ | |
| 2498 | + "manufacturier/commerce" | |
| 2499 | + ], | |
| 2500 | + "connector": "workday", | |
| 2501 | + "status": "actif", | |
| 2502 | + "region": "" | |
| 2503 | + }, | |
| 2504 | + { | |
| 2505 | + "id": "sogeclair", | |
| 2506 | + "name": "SOGECLAIR", | |
| 2507 | + "url": "", | |
| 2508 | + "careers_url": "https://apply.workable.com/sogeclair", | |
| 2509 | + "sectors": [ | |
| 2510 | + "Aéronautique", | |
| 2511 | + "Ingénierie" | |
| 2512 | + ], | |
| 2513 | + "connector": "workable", | |
| 2514 | + "status": "actif", | |
| 2515 | + "region": "Montréal, Mirabel, Laval" | |
| 2516 | + }, | |
| 2517 | + { | |
| 2518 | + "id": "sparkgrid", | |
| 2519 | + "name": "Sparkgrid", | |
| 2520 | + "url": "", | |
| 2521 | + "careers_url": "https://jobs.smartrecruiters.com/company/Sparkgrid", | |
| 2522 | + "sectors": [ | |
| 2523 | + "TI" | |
| 2524 | + ], | |
| 2525 | + "connector": "smartrecruiters", | |
| 2526 | + "status": "actif", | |
| 2527 | + "region": "Montréal" | |
| 2528 | + }, | |
| 2529 | + { | |
| 2530 | + "id": "spiria", | |
| 2531 | + "name": "Spiria", | |
| 2532 | + "url": "", | |
| 2533 | + "careers_url": "https://jobs.lever.co/spiria", | |
| 2534 | + "sectors": [ | |
| 2535 | + "TI" | |
| 2536 | + ], | |
| 2537 | + "connector": "lever", | |
| 2538 | + "status": "actif", | |
| 2539 | + "region": "Montréal, Gatineau" | |
| 2540 | + }, | |
| 2541 | + { | |
| 2542 | + "id": "spreedly", | |
| 2543 | + "name": "Spreedly", | |
| 2544 | + "url": "", | |
| 2545 | + "careers_url": "https://jobs.lever.co/spreedly", | |
| 2546 | + "sectors": [ | |
| 2547 | + "TI", | |
| 2548 | + "Fintech" | |
| 2549 | + ], | |
| 2550 | + "connector": "lever", | |
| 2551 | + "status": "actif", | |
| 2552 | + "region": "Montréal" | |
| 2553 | + }, | |
| 2554 | + { | |
| 2555 | + "id": "squeezestudio", | |
| 2556 | + "name": "Squeeze Studio Animation", | |
| 2557 | + "url": "", | |
| 2558 | + "careers_url": "https://squeezestudio.recruitee.com", | |
| 2559 | + "sectors": [ | |
| 2560 | + "Animation", | |
| 2561 | + "Création" | |
| 2562 | + ], | |
| 2563 | + "connector": "recruitee", | |
| 2564 | + "status": "actif", | |
| 2565 | + "region": "Montréal, Québec" | |
| 2566 | + }, | |
| 2567 | + { | |
| 2568 | + "id": "stelpro", | |
| 2569 | + "name": "Stelpro", | |
| 2570 | + "url": "", | |
| 2571 | + "careers_url": "https://jobs.smartrecruiters.com/company/stelpro", | |
| 2572 | + "sectors": [ | |
| 2573 | + "Production" | |
| 2574 | + ], | |
| 2575 | + "connector": "smartrecruiters", | |
| 2576 | + "status": "actif", | |
| 2577 | + "region": "Saint-Bruno-de-Montarville" | |
| 2578 | + }, | |
| 2579 | + { | |
| 2580 | + "id": "stl_laval", | |
| 2581 | + "name": "Société de transport de Laval", | |
| 2582 | + "url": "https://www.stlaval.ca", | |
| 2583 | + "careers_url": "https://lavaltransit.njoyn.com/CL2/xweb/xweb.asp?clid=60406&page=joblisting&lang=2", | |
| 2584 | + "sectors": [ | |
| 2585 | + "Transport collectif", | |
| 2586 | + "Secteur public" | |
| 2587 | + ], | |
| 2588 | + "connector": "njoyn", | |
| 2589 | + "status": "actif", | |
| 2590 | + "region": "Laval" | |
| 2591 | + }, | |
| 2592 | + { | |
| 2593 | + "id": "suncor", | |
| 2594 | + "name": "Suncor Énergie", | |
| 2595 | + "url": "https://suncor.com", | |
| 2596 | + "careers_url": "https://suncor.wd1.myworkdayjobs.com/Suncor_External", | |
| 2597 | + "sectors": [], | |
| 2598 | + "connector": "workday", | |
| 2599 | + "status": "actif", | |
| 2600 | + "region": "Montréal" | |
| 2601 | + }, | |
| 2602 | + { | |
| 2603 | + "id": "sunlife", | |
| 2604 | + "name": "Sun Life", | |
| 2605 | + "url": "", | |
| 2606 | + "careers_url": "https://sunlife.wd3.myworkdayjobs.com/Experienced-Jobs", | |
| 2607 | + "sectors": [ | |
| 2608 | + "Assurance", | |
| 2609 | + "Finance" | |
| 2610 | + ], | |
| 2611 | + "connector": "workday", | |
| 2612 | + "status": "actif", | |
| 2613 | + "region": "Montréal, Québec" | |
| 2614 | + }, | |
| 2615 | + { | |
| 2616 | + "id": "surmesur", | |
| 2617 | + "name": "Surmesur", | |
| 2618 | + "url": "", | |
| 2619 | + "careers_url": "https://surmesur.bamboohr.com/careers", | |
| 2620 | + "sectors": [ | |
| 2621 | + "Mode", | |
| 2622 | + "Commerce de détail" | |
| 2623 | + ], | |
| 2624 | + "connector": "bamboohr", | |
| 2625 | + "status": "actif", | |
| 2626 | + "region": "Québec, Laval" | |
| 2627 | + }, | |
| 2628 | + { | |
| 2629 | + "id": "sweat_pants_agency", | |
| 2630 | + "name": "Sweat Pants Agency", | |
| 2631 | + "url": "", | |
| 2632 | + "careers_url": "https://apply.workable.com/sweat-pants-agency", | |
| 2633 | + "sectors": [ | |
| 2634 | + "Marketing" | |
| 2635 | + ], | |
| 2636 | + "connector": "workable", | |
| 2637 | + "status": "actif", | |
| 2638 | + "region": "Montréal, Laval, Québec" | |
| 2639 | + }, | |
| 2640 | + { | |
| 2641 | + "id": "talan", | |
| 2642 | + "name": "Talan", | |
| 2643 | + "url": "", | |
| 2644 | + "careers_url": "https://jobs.smartrecruiters.com/company/Talan", | |
| 2645 | + "sectors": [ | |
| 2646 | + "TI", | |
| 2647 | + "Conseil" | |
| 2648 | + ], | |
| 2649 | + "connector": "smartrecruiters", | |
| 2650 | + "status": "actif", | |
| 2651 | + "region": "Montréal" | |
| 2652 | + }, | |
| 2653 | + { | |
| 2654 | + "id": "talsom", | |
| 2655 | + "name": "Talsom", | |
| 2656 | + "url": "", | |
| 2657 | + "careers_url": "https://jobs.smartrecruiters.com/company/talsom", | |
| 2658 | + "sectors": [ | |
| 2659 | + "TI" | |
| 2660 | + ], | |
| 2661 | + "connector": "smartrecruiters", | |
| 2662 | + "status": "actif", | |
| 2663 | + "region": "Montréal" | |
| 2664 | + }, | |
| 2665 | + { | |
| 2666 | + "id": "tandemlaunch", | |
| 2667 | + "name": "TandemLaunch", | |
| 2668 | + "url": "https://www.tandemlaunch.com", | |
| 2669 | + "careers_url": "https://boards.greenhouse.io/tandemlaunch", | |
| 2670 | + "sectors": [ | |
| 2671 | + "TI", | |
| 2672 | + "Deep tech" | |
| 2673 | + ], | |
| 2674 | + "connector": "greenhouse", | |
| 2675 | + "status": "actif", | |
| 2676 | + "region": "Montréal" | |
| 2677 | + }, | |
| 2678 | + { | |
| 2679 | + "id": "td", | |
| 2680 | + "name": "Groupe Banque TD", | |
| 2681 | + "url": "", | |
| 2682 | + "careers_url": "https://td.wd3.myworkdayjobs.com/TD_Bank_Careers", | |
| 2683 | + "sectors": [ | |
| 2684 | + "Finance" | |
| 2685 | + ], | |
| 2686 | + "connector": "workday", | |
| 2687 | + "status": "actif", | |
| 2688 | + "region": "Montréal, Québec" | |
| 2689 | + }, | |
| 2690 | + { | |
| 2691 | + "id": "techo_bloc", | |
| 2692 | + "name": "Techo-Bloc", | |
| 2693 | + "url": "", | |
| 2694 | + "careers_url": "https://jobs.smartrecruiters.com/company/techo-bloc", | |
| 2695 | + "sectors": [ | |
| 2696 | + "Manufacture", | |
| 2697 | + "Aménagement" | |
| 2698 | + ], | |
| 2699 | + "connector": "smartrecruiters", | |
| 2700 | + "status": "actif", | |
| 2701 | + "region": "Chambly, Saint-Hubert" | |
| 2702 | + }, | |
| 2703 | + { | |
| 2704 | + "id": "tecsys", | |
| 2705 | + "name": "Tecsys", | |
| 2706 | + "url": "", | |
| 2707 | + "careers_url": "https://apply.workable.com/tecsys", | |
| 2708 | + "sectors": [ | |
| 2709 | + "TI", | |
| 2710 | + "Logistique" | |
| 2711 | + ], | |
| 2712 | + "connector": "workable", | |
| 2713 | + "status": "actif", | |
| 2714 | + "region": "Montréal" | |
| 2715 | + }, | |
| 2716 | + { | |
| 2717 | + "id": "tehora", | |
| 2718 | + "name": "TEHORA", | |
| 2719 | + "url": "", | |
| 2720 | + "careers_url": "https://apply.workable.com/tehora", | |
| 2721 | + "sectors": [ | |
| 2722 | + "Ingénierie", | |
| 2723 | + "TI", | |
| 2724 | + "Conseil" | |
| 2725 | + ], | |
| 2726 | + "connector": "workable", | |
| 2727 | + "status": "actif", | |
| 2728 | + "region": "Montréal, Québec, Gatineau" | |
| 2729 | + }, | |
| 2730 | + { | |
| 2731 | + "id": "tetrix", | |
| 2732 | + "name": "Tetrix", | |
| 2733 | + "url": "", | |
| 2734 | + "careers_url": "https://jobs.ashbyhq.com/tetrix", | |
| 2735 | + "sectors": [ | |
| 2736 | + "TI" | |
| 2737 | + ], | |
| 2738 | + "connector": "ashby", | |
| 2739 | + "status": "actif", | |
| 2740 | + "region": "Montréal" | |
| 2741 | + }, | |
| 2742 | + { | |
| 2743 | + "id": "toonboom", | |
| 2744 | + "name": "Toon Boom Animation", | |
| 2745 | + "url": "", | |
| 2746 | + "careers_url": "https://toonboom.bamboohr.com/careers", | |
| 2747 | + "sectors": [ | |
| 2748 | + "Animation", | |
| 2749 | + "TI" | |
| 2750 | + ], | |
| 2751 | + "connector": "bamboohr", | |
| 2752 | + "status": "actif", | |
| 2753 | + "region": "Montréal" | |
| 2754 | + }, | |
| 2755 | + { | |
| 2756 | + "id": "transatat1", | |
| 2757 | + "name": "Transat A.T.", | |
| 2758 | + "url": "", | |
| 2759 | + "careers_url": "https://jobs.smartrecruiters.com/company/TransatAT1", | |
| 2760 | + "sectors": [ | |
| 2761 | + "Voyage", | |
| 2762 | + "Aérien" | |
| 2763 | + ], | |
| 2764 | + "connector": "smartrecruiters", | |
| 2765 | + "status": "actif", | |
| 2766 | + "region": "Montréal" | |
| 2767 | + }, | |
| 2768 | + { | |
| 2769 | + "id": "triotech", | |
| 2770 | + "name": "Triotech", | |
| 2771 | + "url": "", | |
| 2772 | + "careers_url": "https://triotech.bamboohr.com/careers", | |
| 2773 | + "sectors": [ | |
| 2774 | + "Divertissement", | |
| 2775 | + "Manufacture" | |
| 2776 | + ], | |
| 2777 | + "connector": "bamboohr", | |
| 2778 | + "status": "actif", | |
| 2779 | + "region": "Joliette, Montréal" | |
| 2780 | + }, | |
| 2781 | + { | |
| 2782 | + "id": "trois_brasseurs", | |
| 2783 | + "name": "3 Brasseurs Canada", | |
| 2784 | + "url": "", | |
| 2785 | + "careers_url": "https://3brasseurs.breezy.hr", | |
| 2786 | + "sectors": [ | |
| 2787 | + "Restauration" | |
| 2788 | + ], | |
| 2789 | + "connector": "breezy", | |
| 2790 | + "status": "actif", | |
| 2791 | + "region": "Montréal, Laval, Brossard" | |
| 2792 | + }, | |
| 2793 | + { | |
| 2794 | + "id": "tsmg", | |
| 2795 | + "name": "TSMG", | |
| 2796 | + "url": "", | |
| 2797 | + "careers_url": "https://jobs.lever.co/tsmg", | |
| 2798 | + "sectors": [ | |
| 2799 | + "Placement", | |
| 2800 | + "Télécoms" | |
| 2801 | + ], | |
| 2802 | + "connector": "lever", | |
| 2803 | + "status": "actif", | |
| 2804 | + "region": "Montréal, Québec" | |
| 2805 | + }, | |
| 2806 | + { | |
| 2807 | + "id": "ubisoft", | |
| 2808 | + "name": "Ubisoft", | |
| 2809 | + "url": "https://www.ubisoft.com", | |
| 2810 | + "careers_url": "https://jobs.smartrecruiters.com/company/Ubisoft2", | |
| 2811 | + "sectors": [ | |
| 2812 | + "Jeux vidéo", | |
| 2813 | + "TI", | |
| 2814 | + "Création" | |
| 2815 | + ], | |
| 2816 | + "connector": "smartrecruiters", | |
| 2817 | + "status": "actif", | |
| 2818 | + "region": "Montréal / Québec / Sherbrooke" | |
| 2819 | + }, | |
| 2820 | + { | |
| 2821 | + "id": "unit8", | |
| 2822 | + "name": "Unit8", | |
| 2823 | + "url": "", | |
| 2824 | + "careers_url": "https://apply.workable.com/unit8", | |
| 2825 | + "sectors": [ | |
| 2826 | + "TI", | |
| 2827 | + "Données" | |
| 2828 | + ], | |
| 2829 | + "connector": "workable", | |
| 2830 | + "status": "actif", | |
| 2831 | + "region": "Montréal" | |
| 2832 | + }, | |
| 2833 | + { | |
| 2834 | + "id": "usmobile", | |
| 2835 | + "name": "US Mobile", | |
| 2836 | + "url": "", | |
| 2837 | + "careers_url": "https://jobs.lever.co/USMobile", | |
| 2838 | + "sectors": [ | |
| 2839 | + "Télécoms" | |
| 2840 | + ], | |
| 2841 | + "connector": "lever", | |
| 2842 | + "status": "actif", | |
| 2843 | + "region": "Montréal" | |
| 2844 | + }, | |
| 2845 | + { | |
| 2846 | + "id": "vaco", | |
| 2847 | + "name": "Vaco", | |
| 2848 | + "url": "", | |
| 2849 | + "careers_url": "https://job-boards.greenhouse.io/vaco", | |
| 2850 | + "sectors": [ | |
| 2851 | + "Placement", | |
| 2852 | + "Conseil" | |
| 2853 | + ], | |
| 2854 | + "connector": "greenhouse", | |
| 2855 | + "status": "actif", | |
| 2856 | + "region": "Montréal" | |
| 2857 | + }, | |
| 2858 | + { | |
| 2859 | + "id": "valsoft_corp", | |
| 2860 | + "name": "Valsoft", | |
| 2861 | + "url": "", | |
| 2862 | + "careers_url": "https://apply.workable.com/valsoft-corp", | |
| 2863 | + "sectors": [ | |
| 2864 | + "TI", | |
| 2865 | + "Logiciel" | |
| 2866 | + ], | |
| 2867 | + "connector": "workable", | |
| 2868 | + "status": "actif", | |
| 2869 | + "region": "Montréal" | |
| 2870 | + }, | |
| 2871 | + { | |
| 2872 | + "id": "valtech", | |
| 2873 | + "name": "Valtech", | |
| 2874 | + "url": "", | |
| 2875 | + "careers_url": "https://job-boards.greenhouse.io/valtech", | |
| 2876 | + "sectors": [ | |
| 2877 | + "TI" | |
| 2878 | + ], | |
| 2879 | + "connector": "greenhouse", | |
| 2880 | + "status": "actif", | |
| 2881 | + "region": "Montréal" | |
| 2882 | + }, | |
| 2883 | + { | |
| 2884 | + "id": "vaporus_inc", | |
| 2885 | + "name": "Vaporus", | |
| 2886 | + "url": "", | |
| 2887 | + "careers_url": "https://vaporus-inc.breezy.hr", | |
| 2888 | + "sectors": [ | |
| 2889 | + "Commerce de détail" | |
| 2890 | + ], | |
| 2891 | + "connector": "breezy", | |
| 2892 | + "status": "actif", | |
| 2893 | + "region": "Montréal" | |
| 2894 | + }, | |
| 2895 | + { | |
| 2896 | + "id": "vasco", | |
| 2897 | + "name": "Vasco", | |
| 2898 | + "url": "", | |
| 2899 | + "careers_url": "https://jobs.ashbyhq.com/vasco", | |
| 2900 | + "sectors": [ | |
| 2901 | + "TI" | |
| 2902 | + ], | |
| 2903 | + "connector": "ashby", | |
| 2904 | + "status": "actif", | |
| 2905 | + "region": "Montréal" | |
| 2906 | + }, | |
| 2907 | + { | |
| 2908 | + "id": "venturemedia", | |
| 2909 | + "name": "Venture Media", | |
| 2910 | + "url": "", | |
| 2911 | + "careers_url": "https://jobs.smartrecruiters.com/company/VentureMedia", | |
| 2912 | + "sectors": [ | |
| 2913 | + "Médias" | |
| 2914 | + ], | |
| 2915 | + "connector": "smartrecruiters", | |
| 2916 | + "status": "actif", | |
| 2917 | + "region": "Montréal" | |
| 2918 | + }, | |
| 2919 | + { | |
| 2920 | + "id": "vicpark", | |
| 2921 | + "name": "Victoria Park Medispa", | |
| 2922 | + "url": "", | |
| 2923 | + "careers_url": "https://vicpark.bamboohr.com/careers", | |
| 2924 | + "sectors": [ | |
| 2925 | + "Santé", | |
| 2926 | + "Esthétique" | |
| 2927 | + ], | |
| 2928 | + "connector": "bamboohr", | |
| 2929 | + "status": "actif", | |
| 2930 | + "region": "Montréal, Gatineau, Granby" | |
| 2931 | + }, | |
| 2932 | + { | |
| 2933 | + "id": "videotron", | |
| 2934 | + "name": "Vidéotron", | |
| 2935 | + "url": "https://videotron.com", | |
| 2936 | + "careers_url": "https://jobs.smartrecruiters.com/company/videotron", | |
| 2937 | + "sectors": [], | |
| 2938 | + "connector": "smartrecruiters", | |
| 2939 | + "status": "actif", | |
| 2940 | + "region": "Montréal" | |
| 2941 | + }, | |
| 2942 | + { | |
| 2943 | + "id": "ville_gatineau", | |
| 2944 | + "name": "Ville de Gatineau", | |
| 2945 | + "url": "https://www.gatineau.ca", | |
| 2946 | + "careers_url": "https://gatineau.njoyn.com/CL2/xweb/xweb.asp?clid=27082&page=joblisting&lang=2", | |
| 2947 | + "sectors": [ | |
| 2948 | + "Municipal", | |
| 2949 | + "Secteur public" | |
| 2950 | + ], | |
| 2951 | + "connector": "njoyn", | |
| 2952 | + "status": "actif", | |
| 2953 | + "region": "Gatineau" | |
| 2954 | + }, | |
| 2955 | + { | |
| 2956 | + "id": "ville_terrebonne", | |
| 2957 | + "name": "Ville de Terrebonne", | |
| 2958 | + "url": "https://www.ville.terrebonne.qc.ca", | |
| 2959 | + "careers_url": "https://clients.njoyn.com/cl4/xweb/xweb.asp?clid=71764&page=joblisting&lang=2", | |
| 2960 | + "sectors": [ | |
| 2961 | + "Municipal", | |
| 2962 | + "Secteur public" | |
| 2963 | + ], | |
| 2964 | + "connector": "njoyn", | |
| 2965 | + "status": "actif", | |
| 2966 | + "region": "Terrebonne" | |
| 2967 | + }, | |
| 2968 | + { | |
| 2969 | + "id": "vmlcanadaen", | |
| 2970 | + "name": "VML Canada", | |
| 2971 | + "url": "", | |
| 2972 | + "careers_url": "https://job-boards.greenhouse.io/vmlcanadaen", | |
| 2973 | + "sectors": [ | |
| 2974 | + "Publicité" | |
| 2975 | + ], | |
| 2976 | + "connector": "greenhouse", | |
| 2977 | + "status": "actif", | |
| 2978 | + "region": "Montréal" | |
| 2979 | + }, | |
| 2980 | + { | |
| 2981 | + "id": "vo2_group", | |
| 2982 | + "name": "VO2 Group", | |
| 2983 | + "url": "", | |
| 2984 | + "careers_url": "https://jobs.lever.co/vo2-group", | |
| 2985 | + "sectors": [ | |
| 2986 | + "TI", | |
| 2987 | + "Conseil" | |
| 2988 | + ], | |
| 2989 | + "connector": "lever", | |
| 2990 | + "status": "actif", | |
| 2991 | + "region": "Montréal" | |
| 2992 | + }, | |
| 2993 | + { | |
| 2994 | + "id": "vooban", | |
| 2995 | + "name": "Vooban", | |
| 2996 | + "url": "", | |
| 2997 | + "careers_url": "https://job-boards.greenhouse.io/vooban", | |
| 2998 | + "sectors": [ | |
| 2999 | + "TI" | |
| 3000 | + ], | |
| 3001 | + "connector": "greenhouse", | |
| 3002 | + "status": "actif", | |
| 3003 | + "region": "Québec" | |
| 3004 | + }, | |
| 3005 | + { | |
| 3006 | + "id": "vosker", | |
| 3007 | + "name": "Vosker", | |
| 3008 | + "url": "", | |
| 3009 | + "careers_url": "https://jobs.smartrecruiters.com/company/vosker", | |
| 3010 | + "sectors": [ | |
| 3011 | + "TI", | |
| 3012 | + "Production" | |
| 3013 | + ], | |
| 3014 | + "connector": "smartrecruiters", | |
| 3015 | + "status": "actif", | |
| 3016 | + "region": "Victoriaville" | |
| 3017 | + }, | |
| 3018 | + { | |
| 3019 | + "id": "voxdata", | |
| 3020 | + "name": "VOXDATA", | |
| 3021 | + "url": "", | |
| 3022 | + "careers_url": "https://voxdata.breezy.hr", | |
| 3023 | + "sectors": [ | |
| 3024 | + "Centre d'appels" | |
| 3025 | + ], | |
| 3026 | + "connector": "breezy", | |
| 3027 | + "status": "actif", | |
| 3028 | + "region": "Montréal" | |
| 3029 | + }, | |
| 3030 | + { | |
| 3031 | + "id": "walmart", | |
| 3032 | + "name": "Walmart Canada", | |
| 3033 | + "url": "https://walmart.ca", | |
| 3034 | + "careers_url": "https://walmart.wd504.myworkdayjobs.com/WalmartExternal", | |
| 3035 | + "sectors": [], | |
| 3036 | + "connector": "workday", | |
| 3037 | + "status": "actif", | |
| 3038 | + "region": "Montréal" | |
| 3039 | + }, | |
| 3040 | + { | |
| 3041 | + "id": "xplornet", | |
| 3042 | + "name": "Xplornet", | |
| 3043 | + "url": "", | |
| 3044 | + "careers_url": "https://jobs.smartrecruiters.com/company/XPLORNET", | |
| 3045 | + "sectors": [ | |
| 3046 | + "Télécoms" | |
| 3047 | + ], | |
| 3048 | + "connector": "smartrecruiters", | |
| 3049 | + "status": "actif", | |
| 3050 | + "region": "Montréal" | |
| 3051 | + }, | |
| 3052 | + { | |
| 3053 | + "id": "xsolla", | |
| 3054 | + "name": "Xsolla", | |
| 3055 | + "url": "", | |
| 3056 | + "careers_url": "https://jobs.lever.co/xsolla", | |
| 3057 | + "sectors": [ | |
| 3058 | + "TI", | |
| 3059 | + "Jeux vidéo" | |
| 3060 | + ], | |
| 3061 | + "connector": "lever", | |
| 3062 | + "status": "actif", | |
| 3063 | + "region": "Montréal" | |
| 3064 | + }, | |
| 3065 | + { | |
| 3066 | + "id": "youset", | |
| 3067 | + "name": "YouSet", | |
| 3068 | + "url": "", | |
| 3069 | + "careers_url": "https://youset.breezy.hr", | |
| 3070 | + "sectors": [ | |
| 3071 | + "Assurance", | |
| 3072 | + "TI" | |
| 3073 | + ], | |
| 3074 | + "connector": "breezy", | |
| 3075 | + "status": "actif", | |
| 3076 | + "region": "Montréal" | |
| 3077 | + }, | |
| 3078 | + { | |
| 3079 | + "id": "ziptrekeco", | |
| 3080 | + "name": "Ziptrek Tremblant", | |
| 3081 | + "url": "https://tremblant.ziptrek.com", | |
| 3082 | + "careers_url": "https://ziptrekeco.bamboohr.com/careers", | |
| 3083 | + "sectors": [ | |
| 3084 | + "manufacturier/commerce" | |
| 3085 | + ], | |
| 3086 | + "connector": "bamboohr", | |
| 3087 | + "status": "actif", | |
| 3088 | + "region": "" | |
| 3089 | + }, | |
| 3090 | + { | |
| 3091 | + "id": "alan", | |
| 3092 | + "name": "Alan Canada", | |
| 3093 | + "url": "", | |
| 3094 | + "careers_url": "https://jobs.ashbyhq.com/alan", | |
| 3095 | + "sectors": [ | |
| 3096 | + "Assurance" | |
| 3097 | + ], | |
| 3098 | + "connector": "ashby", | |
| 3099 | + "status": "actif", | |
| 3100 | + "region": "Montréal" | |
| 3101 | + }, | |
| 3102 | + { | |
| 3103 | + "id": "billups", | |
| 3104 | + "name": "Billups", | |
| 3105 | + "url": "", | |
| 3106 | + "careers_url": "https://jobs.ashbyhq.com/billups", | |
| 3107 | + "sectors": [ | |
| 3108 | + "Marketing" | |
| 3109 | + ], | |
| 3110 | + "connector": "ashby", | |
| 3111 | + "status": "actif", | |
| 3112 | + "region": "Montréal" | |
| 3113 | + }, | |
| 3114 | + { | |
| 3115 | + "id": "exegy", | |
| 3116 | + "name": "Exegy", | |
| 3117 | + "url": "", | |
| 3118 | + "careers_url": "https://jobs.ashbyhq.com/exegy", | |
| 3119 | + "sectors": [ | |
| 3120 | + "TI" | |
| 3121 | + ], | |
| 3122 | + "connector": "ashby", | |
| 3123 | + "status": "actif", | |
| 3124 | + "region": "Montréal" | |
| 3125 | + }, | |
| 3126 | + { | |
| 3127 | + "id": "lambda", | |
| 3128 | + "name": "Lambda", | |
| 3129 | + "url": "", | |
| 3130 | + "careers_url": "https://jobs.ashbyhq.com/lambda", | |
| 3131 | + "sectors": [ | |
| 3132 | + "TI" | |
| 3133 | + ], | |
| 3134 | + "connector": "ashby", | |
| 3135 | + "status": "actif", | |
| 3136 | + "region": "Bécancour" | |
| 3137 | + }, | |
| 3138 | + { | |
| 3139 | + "id": "neofinancial", | |
| 3140 | + "name": "Neo Financial", | |
| 3141 | + "url": "", | |
| 3142 | + "careers_url": "https://jobs.ashbyhq.com/neofinancial", | |
| 3143 | + "sectors": [ | |
| 3144 | + "Finance" | |
| 3145 | + ], | |
| 3146 | + "connector": "ashby", | |
| 3147 | + "status": "actif", | |
| 3148 | + "region": "Laval" | |
| 3149 | + }, | |
| 3150 | + { | |
| 3151 | + "id": "bdl_energie", | |
| 3152 | + "name": "BDL Énergie", | |
| 3153 | + "url": "", | |
| 3154 | + "careers_url": "https://bdl-energie.breezy.hr", | |
| 3155 | + "sectors": [ | |
| 3156 | + "Énergie" | |
| 3157 | + ], | |
| 3158 | + "connector": "breezy", | |
| 3159 | + "status": "actif", | |
| 3160 | + "region": "Sherbrooke" | |
| 3161 | + }, | |
| 3162 | + { | |
| 3163 | + "id": "black_mcdonald_francais", | |
| 3164 | + "name": "Black & McDonald", | |
| 3165 | + "url": "", | |
| 3166 | + "careers_url": "https://black-mcdonald-francais.breezy.hr", | |
| 3167 | + "sectors": [ | |
| 3168 | + "Construction" | |
| 3169 | + ], | |
| 3170 | + "connector": "breezy", | |
| 3171 | + "status": "actif", | |
| 3172 | + "region": "Montréal" | |
| 3173 | + }, | |
| 3174 | + { | |
| 3175 | + "id": "lindt_sprunglicanada", | |
| 3176 | + "name": "Lindt & Sprüngli Canada", | |
| 3177 | + "url": "", | |
| 3178 | + "careers_url": "https://lindt-sprunglicanada.breezy.hr", | |
| 3179 | + "sectors": [ | |
| 3180 | + "Commerce de détail" | |
| 3181 | + ], | |
| 3182 | + "connector": "breezy", | |
| 3183 | + "status": "actif", | |
| 3184 | + "region": "Gatineau" | |
| 3185 | + }, | |
| 3186 | + { | |
| 3187 | + "id": "panda7", | |
| 3188 | + "name": "Panda7", | |
| 3189 | + "url": "", | |
| 3190 | + "careers_url": "https://panda7.breezy.hr", | |
| 3191 | + "sectors": [ | |
| 3192 | + "Assurance" | |
| 3193 | + ], | |
| 3194 | + "connector": "breezy", | |
| 3195 | + "status": "actif", | |
| 3196 | + "region": "Montréal" | |
| 3197 | + }, | |
| 3198 | + { | |
| 3199 | + "id": "progesys_inc", | |
| 3200 | + "name": "Progesys", | |
| 3201 | + "url": "", | |
| 3202 | + "careers_url": "https://progesys-inc.breezy.hr", | |
| 3203 | + "sectors": [ | |
| 3204 | + "Ingénierie" | |
| 3205 | + ], | |
| 3206 | + "connector": "breezy", | |
| 3207 | + "status": "actif", | |
| 3208 | + "region": "Contrecœur" | |
| 3209 | + }, | |
| 3210 | + { | |
| 3211 | + "id": "sense_engineering", | |
| 3212 | + "name": "Sense Ingénierie", | |
| 3213 | + "url": "", | |
| 3214 | + "careers_url": "https://sense-engineering.breezy.hr", | |
| 3215 | + "sectors": [ | |
| 3216 | + "Ingénierie" | |
| 3217 | + ], | |
| 3218 | + "connector": "breezy", | |
| 3219 | + "status": "actif", | |
| 3220 | + "region": "Montréal" | |
| 3221 | + }, | |
| 3222 | + { | |
| 3223 | + "id": "telus_health_7fe6b0fe8614", | |
| 3224 | + "name": "TELUS Santé — Cliniques", | |
| 3225 | + "url": "", | |
| 3226 | + "careers_url": "https://telus-health-7fe6b0fe8614.breezy.hr", | |
| 3227 | + "sectors": [ | |
| 3228 | + "Santé" | |
| 3229 | + ], | |
| 3230 | + "connector": "breezy", | |
| 3231 | + "status": "actif", | |
| 3232 | + "region": "Montréal" | |
| 3233 | + }, | |
| 3234 | + { | |
| 3235 | + "id": "turbulent", | |
| 3236 | + "name": "Turbulent", | |
| 3237 | + "url": "", | |
| 3238 | + "careers_url": "https://turbulent.breezy.hr", | |
| 3239 | + "sectors": [ | |
| 3240 | + "Jeu vidéo" | |
| 3241 | + ], | |
| 3242 | + "connector": "breezy", | |
| 3243 | + "status": "actif", | |
| 3244 | + "region": "Montréal" | |
| 3245 | + }, | |
| 3246 | + { | |
| 3247 | + "id": "aloyoga", | |
| 3248 | + "name": "Alo Yoga", | |
| 3249 | + "url": "", | |
| 3250 | + "careers_url": "https://job-boards.greenhouse.io/aloyoga", | |
| 3251 | + "sectors": [ | |
| 3252 | + "Commerce de détail" | |
| 3253 | + ], | |
| 3254 | + "connector": "greenhouse", | |
| 3255 | + "status": "actif", | |
| 3256 | + "region": "Laval" | |
| 3257 | + }, | |
| 3258 | + { | |
| 3259 | + "id": "autotradercanada", | |
| 3260 | + "name": "AutoTrader Canada", | |
| 3261 | + "url": "", | |
| 3262 | + "careers_url": "https://job-boards.greenhouse.io/autotradercanada", | |
| 3263 | + "sectors": [ | |
| 3264 | + "Automobile" | |
| 3265 | + ], | |
| 3266 | + "connector": "greenhouse", | |
| 3267 | + "status": "actif", | |
| 3268 | + "region": "Longueuil" | |
| 3269 | + }, | |
| 3270 | + { | |
| 3271 | + "id": "cloudchamberfr", | |
| 3272 | + "name": "Cloud Chamber Montréal", | |
| 3273 | + "url": "", | |
| 3274 | + "careers_url": "https://job-boards.greenhouse.io/cloudchamberfr", | |
| 3275 | + "sectors": [ | |
| 3276 | + "Jeu vidéo" | |
| 3277 | + ], | |
| 3278 | + "connector": "greenhouse", | |
| 3279 | + "status": "actif", | |
| 3280 | + "region": "Montréal" | |
| 3281 | + }, | |
| 3282 | + { | |
| 3283 | + "id": "clubmonaco", | |
| 3284 | + "name": "Club Monaco", | |
| 3285 | + "url": "", | |
| 3286 | + "careers_url": "https://job-boards.greenhouse.io/clubmonaco", | |
| 3287 | + "sectors": [ | |
| 3288 | + "Commerce de détail" | |
| 3289 | + ], | |
| 3290 | + "connector": "greenhouse", | |
| 3291 | + "status": "actif", | |
| 3292 | + "region": "Montréal" | |
| 3293 | + }, | |
| 3294 | + { | |
| 3295 | + "id": "coveofr", | |
| 3296 | + "name": "Coveo", | |
| 3297 | + "url": "", | |
| 3298 | + "careers_url": "https://job-boards.greenhouse.io/coveofr", | |
| 3299 | + "sectors": [ | |
| 3300 | + "TI" | |
| 3301 | + ], | |
| 3302 | + "connector": "greenhouse", | |
| 3303 | + "status": "actif", | |
| 3304 | + "region": "Québec" | |
| 3305 | + }, | |
| 3306 | + { | |
| 3307 | + "id": "keelinfrastructure", | |
| 3308 | + "name": "Keel Infrastructure", | |
| 3309 | + "url": "", | |
| 3310 | + "careers_url": "https://job-boards.greenhouse.io/keelinfrastructure", | |
| 3311 | + "sectors": [ | |
| 3312 | + "Infrastructures" | |
| 3313 | + ], | |
| 3314 | + "connector": "greenhouse", | |
| 3315 | + "status": "actif", | |
| 3316 | + "region": "Montréal" | |
| 3317 | + }, | |
| 3318 | + { | |
| 3319 | + "id": "laportefr", | |
| 3320 | + "name": "Laporte Experts Conseils", | |
| 3321 | + "url": "", | |
| 3322 | + "careers_url": "https://job-boards.greenhouse.io/laportefr", | |
| 3323 | + "sectors": [ | |
| 3324 | + "Ingénierie" | |
| 3325 | + ], | |
| 3326 | + "connector": "greenhouse", | |
| 3327 | + "status": "actif", | |
| 3328 | + "region": "Montréal" | |
| 3329 | + }, | |
| 3330 | + { | |
| 3331 | + "id": "lasenza", | |
| 3332 | + "name": "La Senza", | |
| 3333 | + "url": "", | |
| 3334 | + "careers_url": "https://job-boards.greenhouse.io/lasenza", | |
| 3335 | + "sectors": [ | |
| 3336 | + "Commerce de détail" | |
| 3337 | + ], | |
| 3338 | + "connector": "greenhouse", | |
| 3339 | + "status": "actif", | |
| 3340 | + "region": "Québec" | |
| 3341 | + }, | |
| 3342 | + { | |
| 3343 | + "id": "latys", | |
| 3344 | + "name": "Latys Intelligence", | |
| 3345 | + "url": "", | |
| 3346 | + "careers_url": "https://job-boards.greenhouse.io/latys", | |
| 3347 | + "sectors": [ | |
| 3348 | + "TI" | |
| 3349 | + ], | |
| 3350 | + "connector": "greenhouse", | |
| 3351 | + "status": "actif", | |
| 3352 | + "region": "Montréal" | |
| 3353 | + }, | |
| 3354 | + { | |
| 3355 | + "id": "loizero", | |
| 3356 | + "name": "LoiZéro", | |
| 3357 | + "url": "", | |
| 3358 | + "careers_url": "https://job-boards.greenhouse.io/loizero", | |
| 3359 | + "sectors": [ | |
| 3360 | + "Services juridiques" | |
| 3361 | + ], | |
| 3362 | + "connector": "greenhouse", | |
| 3363 | + "status": "actif", | |
| 3364 | + "region": "Montréal" | |
| 3365 | + }, | |
| 3366 | + { | |
| 3367 | + "id": "lyft", | |
| 3368 | + "name": "Lyft", | |
| 3369 | + "url": "", | |
| 3370 | + "careers_url": "https://job-boards.greenhouse.io/lyft", | |
| 3371 | + "sectors": [ | |
| 3372 | + "Transport" | |
| 3373 | + ], | |
| 3374 | + "connector": "greenhouse", | |
| 3375 | + "status": "actif", | |
| 3376 | + "region": "Montréal" | |
| 3377 | + }, | |
| 3378 | + { | |
| 3379 | + "id": "mejuri", | |
| 3380 | + "name": "Mejuri", | |
| 3381 | + "url": "", | |
| 3382 | + "careers_url": "https://job-boards.greenhouse.io/mejuri", | |
| 3383 | + "sectors": [ | |
| 3384 | + "Commerce de détail" | |
| 3385 | + ], | |
| 3386 | + "connector": "greenhouse", | |
| 3387 | + "status": "actif", | |
| 3388 | + "region": "Montréal" | |
| 3389 | + }, | |
| 3390 | + { | |
| 3391 | + "id": "royalvet", | |
| 3392 | + "name": "Royal Vet", | |
| 3393 | + "url": "", | |
| 3394 | + "careers_url": "https://job-boards.greenhouse.io/royalvet", | |
| 3395 | + "sectors": [ | |
| 3396 | + "Santé animale" | |
| 3397 | + ], | |
| 3398 | + "connector": "greenhouse", | |
| 3399 | + "status": "actif", | |
| 3400 | + "region": "Montréal" | |
| 3401 | + }, | |
| 3402 | + { | |
| 3403 | + "id": "sonypicturesimageworks", | |
| 3404 | + "name": "Sony Pictures Imageworks", | |
| 3405 | + "url": "", | |
| 3406 | + "careers_url": "https://job-boards.greenhouse.io/sonypicturesimageworks", | |
| 3407 | + "sectors": [ | |
| 3408 | + "Effets visuels" | |
| 3409 | + ], | |
| 3410 | + "connector": "greenhouse", | |
| 3411 | + "status": "actif", | |
| 3412 | + "region": "Montréal" | |
| 3413 | + }, | |
| 3414 | + { | |
| 3415 | + "id": "studiokraftonboard", | |
| 3416 | + "name": "KRAFTON Montréal Studio", | |
| 3417 | + "url": "", | |
| 3418 | + "careers_url": "https://job-boards.greenhouse.io/studiokraftonboard", | |
| 3419 | + "sectors": [ | |
| 3420 | + "Jeu vidéo" | |
| 3421 | + ], | |
| 3422 | + "connector": "greenhouse", | |
| 3423 | + "status": "actif", | |
| 3424 | + "region": "Montréal" | |
| 3425 | + }, | |
| 3426 | + { | |
| 3427 | + "id": "terrestarsolutionsfr", | |
| 3428 | + "name": "Terrestar Solutions", | |
| 3429 | + "url": "", | |
| 3430 | + "careers_url": "https://job-boards.greenhouse.io/terrestarsolutionsfr", | |
| 3431 | + "sectors": [ | |
| 3432 | + "Télécommunications" | |
| 3433 | + ], | |
| 3434 | + "connector": "greenhouse", | |
| 3435 | + "status": "actif", | |
| 3436 | + "region": "Montréal" | |
| 3437 | + }, | |
| 3438 | + { | |
| 3439 | + "id": "tobogganlabs", | |
| 3440 | + "name": "Toboggan Labs", | |
| 3441 | + "url": "", | |
| 3442 | + "careers_url": "https://job-boards.greenhouse.io/tobogganlabs", | |
| 3443 | + "sectors": [ | |
| 3444 | + "Jeu vidéo" | |
| 3445 | + ], | |
| 3446 | + "connector": "greenhouse", | |
| 3447 | + "status": "actif", | |
| 3448 | + "region": "Montréal" | |
| 3449 | + }, | |
| 3450 | + { | |
| 3451 | + "id": "cologix", | |
| 3452 | + "name": "Cologix", | |
| 3453 | + "url": "", | |
| 3454 | + "careers_url": "https://jobs.lever.co/cologix", | |
| 3455 | + "sectors": [ | |
| 3456 | + "TI" | |
| 3457 | + ], | |
| 3458 | + "connector": "lever", | |
| 3459 | + "status": "actif", | |
| 3460 | + "region": "Montréal" | |
| 3461 | + }, | |
| 3462 | + { | |
| 3463 | + "id": "daniels_sharpsmart", | |
| 3464 | + "name": "Daniels Health Canada", | |
| 3465 | + "url": "", | |
| 3466 | + "careers_url": "https://jobs.lever.co/daniels-sharpsmart", | |
| 3467 | + "sectors": [ | |
| 3468 | + "Santé" | |
| 3469 | + ], | |
| 3470 | + "connector": "lever", | |
| 3471 | + "status": "actif", | |
| 3472 | + "region": "Montréal" | |
| 3473 | + }, | |
| 3474 | + { | |
| 3475 | + "id": "ecosystem", | |
| 3476 | + "name": "Ecosystem Énergie", | |
| 3477 | + "url": "", | |
| 3478 | + "careers_url": "https://jobs.lever.co/ecosystem", | |
| 3479 | + "sectors": [ | |
| 3480 | + "Énergie" | |
| 3481 | + ], | |
| 3482 | + "connector": "lever", | |
| 3483 | + "status": "actif", | |
| 3484 | + "region": "Montréal" | |
| 3485 | + }, | |
| 3486 | + { | |
| 3487 | + "id": "lrdgonline", | |
| 3488 | + "name": "LRDG (Language Research Development Group)", | |
| 3489 | + "url": "", | |
| 3490 | + "careers_url": "https://jobs.lever.co/lrdgonline", | |
| 3491 | + "sectors": [ | |
| 3492 | + "Éducation" | |
| 3493 | + ], | |
| 3494 | + "connector": "lever", | |
| 3495 | + "status": "actif", | |
| 3496 | + "region": "Montréal" | |
| 3497 | + }, | |
| 3498 | + { | |
| 3499 | + "id": "maquettevirtuelle", | |
| 3500 | + "name": "Maquette Virtuelle", | |
| 3501 | + "url": "", | |
| 3502 | + "careers_url": "https://jobs.lever.co/maquettevirtuelle", | |
| 3503 | + "sectors": [ | |
| 3504 | + "Ingénierie" | |
| 3505 | + ], | |
| 3506 | + "connector": "lever", | |
| 3507 | + "status": "actif", | |
| 3508 | + "region": "Montréal" | |
| 3509 | + }, | |
| 3510 | + { | |
| 3511 | + "id": "telesat", | |
| 3512 | + "name": "Telesat", | |
| 3513 | + "url": "", | |
| 3514 | + "careers_url": "https://jobs.lever.co/telesat", | |
| 3515 | + "sectors": [ | |
| 3516 | + "Aérospatiale" | |
| 3517 | + ], | |
| 3518 | + "connector": "lever", | |
| 3519 | + "status": "actif", | |
| 3520 | + "region": "Gatineau" | |
| 3521 | + }, | |
| 3522 | + { | |
| 3523 | + "id": "agiledss", | |
| 3524 | + "name": "Agile DSS", | |
| 3525 | + "url": "", | |
| 3526 | + "careers_url": "https://agiledss.recruitee.com", | |
| 3527 | + "sectors": [ | |
| 3528 | + "TI" | |
| 3529 | + ], | |
| 3530 | + "connector": "recruitee", | |
| 3531 | + "status": "actif", | |
| 3532 | + "region": "Montréal" | |
| 3533 | + }, | |
| 3534 | + { | |
| 3535 | + "id": "avantageplus", | |
| 3536 | + "name": "Avantage Plus", | |
| 3537 | + "url": "", | |
| 3538 | + "careers_url": "https://avantageplus.recruitee.com", | |
| 3539 | + "sectors": [ | |
| 3540 | + "Services" | |
| 3541 | + ], | |
| 3542 | + "connector": "recruitee", | |
| 3543 | + "status": "actif", | |
| 3544 | + "region": "Québec" | |
| 3545 | + }, | |
| 3546 | + { | |
| 3547 | + "id": "eurofinsenvironex", | |
| 3548 | + "name": "Eurofins EnvironeX", | |
| 3549 | + "url": "", | |
| 3550 | + "careers_url": "https://eurofinsenvironex.recruitee.com", | |
| 3551 | + "sectors": [ | |
| 3552 | + "Laboratoires" | |
| 3553 | + ], | |
| 3554 | + "connector": "recruitee", | |
| 3555 | + "status": "actif", | |
| 3556 | + "region": "Longueuil" | |
| 3557 | + }, | |
| 3558 | + { | |
| 3559 | + "id": "pivotandedge", | |
| 3560 | + "name": "Pivot + Edge", | |
| 3561 | + "url": "", | |
| 3562 | + "careers_url": "https://pivotandedge.recruitee.com", | |
| 3563 | + "sectors": [ | |
| 3564 | + "Services" | |
| 3565 | + ], | |
| 3566 | + "connector": "recruitee", | |
| 3567 | + "status": "actif", | |
| 3568 | + "region": "Gatineau" | |
| 3569 | + }, | |
| 3570 | + { | |
| 3571 | + "id": "projevia", | |
| 3572 | + "name": "Projevia", | |
| 3573 | + "url": "", | |
| 3574 | + "careers_url": "https://projevia.recruitee.com", | |
| 3575 | + "sectors": [ | |
| 3576 | + "Ingénierie" | |
| 3577 | + ], | |
| 3578 | + "connector": "recruitee", | |
| 3579 | + "status": "actif", | |
| 3580 | + "region": "Montréal" | |
| 3581 | + }, | |
| 3582 | + { | |
| 3583 | + "id": "stasinc", | |
| 3584 | + "name": "STAS", | |
| 3585 | + "url": "", | |
| 3586 | + "careers_url": "https://stasinc.recruitee.com", | |
| 3587 | + "sectors": [ | |
| 3588 | + "Fabrication" | |
| 3589 | + ], | |
| 3590 | + "connector": "recruitee", | |
| 3591 | + "status": "actif", | |
| 3592 | + "region": "Saguenay" | |
| 3593 | + }, | |
| 3594 | + { | |
| 3595 | + "id": "teknionroybreton", | |
| 3596 | + "name": "Teknion Roy & Breton", | |
| 3597 | + "url": "", | |
| 3598 | + "careers_url": "https://teknionroybreton.recruitee.com", | |
| 3599 | + "sectors": [ | |
| 3600 | + "Fabrication" | |
| 3601 | + ], | |
| 3602 | + "connector": "recruitee", | |
| 3603 | + "status": "actif", | |
| 3604 | + "region": "Lévis" | |
| 3605 | + }, | |
| 3606 | + { | |
| 3607 | + "id": "artelia", | |
| 3608 | + "name": "Artelia Canada", | |
| 3609 | + "url": "", | |
| 3610 | + "careers_url": "https://jobs.smartrecruiters.com/company/artelia", | |
| 3611 | + "sectors": [ | |
| 3612 | + "Ingénierie" | |
| 3613 | + ], | |
| 3614 | + "connector": "smartrecruiters", | |
| 3615 | + "status": "actif", | |
| 3616 | + "region": "Montréal" | |
| 3617 | + }, | |
| 3618 | + { | |
| 3619 | + "id": "californiaclosets", | |
| 3620 | + "name": "California Closets", | |
| 3621 | + "url": "", | |
| 3622 | + "careers_url": "https://jobs.smartrecruiters.com/company/californiaclosets", | |
| 3623 | + "sectors": [ | |
| 3624 | + "Fabrication" | |
| 3625 | + ], | |
| 3626 | + "connector": "smartrecruiters", | |
| 3627 | + "status": "actif", | |
| 3628 | + "region": "Montréal" | |
| 3629 | + }, | |
| 3630 | + { | |
| 3631 | + "id": "centremultiethniquedequbec", | |
| 3632 | + "name": "Centre multiethnique de Québec", | |
| 3633 | + "url": "", | |
| 3634 | + "careers_url": "https://jobs.smartrecruiters.com/company/centremultiethniquedequbec", | |
| 3635 | + "sectors": [ | |
| 3636 | + "Services sociaux" | |
| 3637 | + ], | |
| 3638 | + "connector": "smartrecruiters", | |
| 3639 | + "status": "actif", | |
| 3640 | + "region": "Québec" | |
| 3641 | + }, | |
| 3642 | + { | |
| 3643 | + "id": "coledesentrepreneursduqubec", | |
| 3644 | + "name": "École des entrepreneurs du Québec", | |
| 3645 | + "url": "", | |
| 3646 | + "careers_url": "https://jobs.smartrecruiters.com/company/coledesentrepreneursduqubec", | |
| 3647 | + "sectors": [ | |
| 3648 | + "Éducation" | |
| 3649 | + ], | |
| 3650 | + "connector": "smartrecruiters", | |
| 3651 | + "status": "actif", | |
| 3652 | + "region": "Montréal" | |
| 3653 | + }, | |
| 3654 | + { | |
| 3655 | + "id": "guruorganicenergydrink", | |
| 3656 | + "name": "GURU Boisson Énergisante", | |
| 3657 | + "url": "", | |
| 3658 | + "careers_url": "https://jobs.smartrecruiters.com/company/guruorganicenergydrink", | |
| 3659 | + "sectors": [ | |
| 3660 | + "Agroalimentaire" | |
| 3661 | + ], | |
| 3662 | + "connector": "smartrecruiters", | |
| 3663 | + "status": "actif", | |
| 3664 | + "region": "Montréal" | |
| 3665 | + }, | |
| 3666 | + { | |
| 3667 | + "id": "hmgroup", | |
| 3668 | + "name": "H&M", | |
| 3669 | + "url": "", | |
| 3670 | + "careers_url": "https://jobs.smartrecruiters.com/company/hmgroup", | |
| 3671 | + "sectors": [ | |
| 3672 | + "Commerce de détail" | |
| 3673 | + ], | |
| 3674 | + "connector": "smartrecruiters", | |
| 3675 | + "status": "actif", | |
| 3676 | + "region": "Montréal" | |
| 3677 | + }, | |
| 3678 | + { | |
| 3679 | + "id": "lemay", | |
| 3680 | + "name": "Lemay", | |
| 3681 | + "url": "", | |
| 3682 | + "careers_url": "https://jobs.smartrecruiters.com/company/lemay", | |
| 3683 | + "sectors": [ | |
| 3684 | + "Architecture" | |
| 3685 | + ], | |
| 3686 | + "connector": "smartrecruiters", | |
| 3687 | + "status": "actif", | |
| 3688 | + "region": "Montréal" | |
| 3689 | + }, | |
| 3690 | + { | |
| 3691 | + "id": "linenchest", | |
| 3692 | + "name": "Linen Chest", | |
| 3693 | + "url": "", | |
| 3694 | + "careers_url": "https://jobs.smartrecruiters.com/company/linenchest", | |
| 3695 | + "sectors": [ | |
| 3696 | + "Commerce de détail" | |
| 3697 | + ], | |
| 3698 | + "connector": "smartrecruiters", | |
| 3699 | + "status": "actif", | |
| 3700 | + "region": "Laval" | |
| 3701 | + }, | |
| 3702 | + { | |
| 3703 | + "id": "renaud_bray", | |
| 3704 | + "name": "Renaud-Bray", | |
| 3705 | + "url": "", | |
| 3706 | + "careers_url": "https://jobs.smartrecruiters.com/company/renaud-bray", | |
| 3707 | + "sectors": [ | |
| 3708 | + "Commerce de détail" | |
| 3709 | + ], | |
| 3710 | + "connector": "smartrecruiters", | |
| 3711 | + "status": "actif", | |
| 3712 | + "region": "Montréal" | |
| 3713 | + }, | |
| 3714 | + { | |
| 3715 | + "id": "sikaag", | |
| 3716 | + "name": "Sika Canada", | |
| 3717 | + "url": "", | |
| 3718 | + "careers_url": "https://jobs.smartrecruiters.com/company/sikaag", | |
| 3719 | + "sectors": [ | |
| 3720 | + "Construction" | |
| 3721 | + ], | |
| 3722 | + "connector": "smartrecruiters", | |
| 3723 | + "status": "actif", | |
| 3724 | + "region": "Pointe-Claire" | |
| 3725 | + }, | |
| 3726 | + { | |
| 3727 | + "id": "sodexocanadaltd", | |
| 3728 | + "name": "Sodexo Canada", | |
| 3729 | + "url": "", | |
| 3730 | + "careers_url": "https://jobs.smartrecruiters.com/company/sodexocanadaltd", | |
| 3731 | + "sectors": [ | |
| 3732 | + "Services alimentaires" | |
| 3733 | + ], | |
| 3734 | + "connector": "smartrecruiters", | |
| 3735 | + "status": "actif", | |
| 3736 | + "region": "Montréal" | |
| 3737 | + }, | |
| 3738 | + { | |
| 3739 | + "id": "structube1", | |
| 3740 | + "name": "Structube", | |
| 3741 | + "url": "", | |
| 3742 | + "careers_url": "https://jobs.smartrecruiters.com/company/structube1", | |
| 3743 | + "sectors": [ | |
| 3744 | + "Commerce de détail" | |
| 3745 | + ], | |
| 3746 | + "connector": "smartrecruiters", | |
| 3747 | + "status": "actif", | |
| 3748 | + "region": "Montréal" | |
| 3749 | + }, | |
| 3750 | + { | |
| 3751 | + "id": "trupanion1", | |
| 3752 | + "name": "Trupanion", | |
| 3753 | + "url": "", | |
| 3754 | + "careers_url": "https://jobs.smartrecruiters.com/company/trupanion1", | |
| 3755 | + "sectors": [ | |
| 3756 | + "Assurance" | |
| 3757 | + ], | |
| 3758 | + "connector": "smartrecruiters", | |
| 3759 | + "status": "actif", | |
| 3760 | + "region": "Montréal" | |
| 3761 | + }, | |
| 3762 | + { | |
| 3763 | + "id": "charlotte_tilbury", | |
| 3764 | + "name": "Charlotte Tilbury", | |
| 3765 | + "url": "", | |
| 3766 | + "careers_url": "https://apply.workable.com/charlotte-tilbury", | |
| 3767 | + "sectors": [ | |
| 3768 | + "Commerce de détail" | |
| 3769 | + ], | |
| 3770 | + "connector": "workable", | |
| 3771 | + "status": "actif", | |
| 3772 | + "region": "Montréal" | |
| 3773 | + }, | |
| 3774 | + { | |
| 3775 | + "id": "csncollision", | |
| 3776 | + "name": "CSN Collision", | |
| 3777 | + "url": "", | |
| 3778 | + "careers_url": "https://apply.workable.com/csncollision", | |
| 3779 | + "sectors": [ | |
| 3780 | + "Automobile" | |
| 3781 | + ], | |
| 3782 | + "connector": "workable", | |
| 3783 | + "status": "actif", | |
| 3784 | + "region": "Montréal" | |
| 3785 | + }, | |
| 3786 | + { | |
| 3787 | + "id": "cts_foods_brokers_inc", | |
| 3788 | + "name": "CTS Foods Brokers", | |
| 3789 | + "url": "", | |
| 3790 | + "careers_url": "https://apply.workable.com/cts-foods-brokers-inc", | |
| 3791 | + "sectors": [ | |
| 3792 | + "Agroalimentaire" | |
| 3793 | + ], | |
| 3794 | + "connector": "workable", | |
| 3795 | + "status": "actif", | |
| 3796 | + "region": "Montréal" | |
| 3797 | + }, | |
| 3798 | + { | |
| 3799 | + "id": "damotech", | |
| 3800 | + "name": "Damotech", | |
| 3801 | + "url": "", | |
| 3802 | + "careers_url": "https://apply.workable.com/damotech", | |
| 3803 | + "sectors": [ | |
| 3804 | + "Fabrication" | |
| 3805 | + ], | |
| 3806 | + "connector": "workable", | |
| 3807 | + "status": "actif", | |
| 3808 | + "region": "Boucherville" | |
| 3809 | + }, | |
| 3810 | + { | |
| 3811 | + "id": "delmar_international_inc", | |
| 3812 | + "name": "Delmar International", | |
| 3813 | + "url": "", | |
| 3814 | + "careers_url": "https://apply.workable.com/delmar-international-inc", | |
| 3815 | + "sectors": [ | |
| 3816 | + "Logistique" | |
| 3817 | + ], | |
| 3818 | + "connector": "workable", | |
| 3819 | + "status": "actif", | |
| 3820 | + "region": "Montréal" | |
| 3821 | + }, | |
| 3822 | + { | |
| 3823 | + "id": "export_development_canada", | |
| 3824 | + "name": "Exportation et développement Canada (EDC)", | |
| 3825 | + "url": "", | |
| 3826 | + "careers_url": "https://apply.workable.com/export-development-canada", | |
| 3827 | + "sectors": [ | |
| 3828 | + "Finance" | |
| 3829 | + ], | |
| 3830 | + "connector": "workable", | |
| 3831 | + "status": "actif", | |
| 3832 | + "region": "Montréal" | |
| 3833 | + }, | |
| 3834 | + { | |
| 3835 | + "id": "financeit", | |
| 3836 | + "name": "Financeit", | |
| 3837 | + "url": "", | |
| 3838 | + "careers_url": "https://apply.workable.com/financeit", | |
| 3839 | + "sectors": [ | |
| 3840 | + "Finance" | |
| 3841 | + ], | |
| 3842 | + "connector": "workable", | |
| 3843 | + "status": "actif", | |
| 3844 | + "region": "Montréal" | |
| 3845 | + }, | |
| 3846 | + { | |
| 3847 | + "id": "flo_addenergie", | |
| 3848 | + "name": "FLO (AddÉnergie)", | |
| 3849 | + "url": "", | |
| 3850 | + "careers_url": "https://apply.workable.com/flo-addenergie", | |
| 3851 | + "sectors": [ | |
| 3852 | + "Énergie" | |
| 3853 | + ], | |
| 3854 | + "connector": "workable", | |
| 3855 | + "status": "actif", | |
| 3856 | + "region": "Québec" | |
| 3857 | + }, | |
| 3858 | + { | |
| 3859 | + "id": "keywords_intl1", | |
| 3860 | + "name": "Keywords Studios", | |
| 3861 | + "url": "", | |
| 3862 | + "careers_url": "https://apply.workable.com/keywords-intl1", | |
| 3863 | + "sectors": [ | |
| 3864 | + "Jeu vidéo" | |
| 3865 | + ], | |
| 3866 | + "connector": "workable", | |
| 3867 | + "status": "actif", | |
| 3868 | + "region": "Montréal" | |
| 3869 | + }, | |
| 3870 | + { | |
| 3871 | + "id": "rentokil_initial", | |
| 3872 | + "name": "Rentokil Initial", | |
| 3873 | + "url": "", | |
| 3874 | + "careers_url": "https://apply.workable.com/rentokil-initial", | |
| 3875 | + "sectors": [ | |
| 3876 | + "Services" | |
| 3877 | + ], | |
| 3878 | + "connector": "workable", | |
| 3879 | + "status": "actif", | |
| 3880 | + "region": "Montréal" | |
| 3881 | + }, | |
| 3882 | + { | |
| 3883 | + "id": "starlink_aviation", | |
| 3884 | + "name": "Starlink Aviation", | |
| 3885 | + "url": "", | |
| 3886 | + "careers_url": "https://apply.workable.com/starlink-aviation", | |
| 3887 | + "sectors": [ | |
| 3888 | + "Aérospatiale" | |
| 3889 | + ], | |
| 3890 | + "connector": "workable", | |
| 3891 | + "status": "actif", | |
| 3892 | + "region": "Dorval" | |
| 3893 | + }, | |
| 3894 | + { | |
| 3895 | + "id": "abbott", | |
| 3896 | + "name": "Abbott", | |
| 3897 | + "url": "", | |
| 3898 | + "careers_url": "https://abbott.wd5.myworkdayjobs.com/abbottcareers", | |
| 3899 | + "sectors": [ | |
| 3900 | + "Santé" | |
| 3901 | + ], | |
| 3902 | + "connector": "workday", | |
| 3903 | + "status": "actif", | |
| 3904 | + "region": "Montréal" | |
| 3905 | + }, | |
| 3906 | + { | |
| 3907 | + "id": "allstate", | |
| 3908 | + "name": "Allstate Canada", | |
| 3909 | + "url": "", | |
| 3910 | + "careers_url": "https://allstate.wd5.myworkdayjobs.com/allstate_careers", | |
| 3911 | + "sectors": [ | |
| 3912 | + "Assurance" | |
| 3913 | + ], | |
| 3914 | + "connector": "workday", | |
| 3915 | + "status": "actif", | |
| 3916 | + "region": "Québec" | |
| 3917 | + }, | |
| 3918 | + { | |
| 3919 | + "id": "aritzia", | |
| 3920 | + "name": "Aritzia", | |
| 3921 | + "url": "", | |
| 3922 | + "careers_url": "https://aritzia.wd3.myworkdayjobs.com/external", | |
| 3923 | + "sectors": [ | |
| 3924 | + "Commerce de détail" | |
| 3925 | + ], | |
| 3926 | + "connector": "workday", | |
| 3927 | + "status": "actif", | |
| 3928 | + "region": "Laval" | |
| 3929 | + }, | |
| 3930 | + { | |
| 3931 | + "id": "cineplex", | |
| 3932 | + "name": "Cineplex", | |
| 3933 | + "url": "", | |
| 3934 | + "careers_url": "https://cineplex.wd3.myworkdayjobs.com/Cineplex", | |
| 3935 | + "sectors": [ | |
| 3936 | + "Divertissement" | |
| 3937 | + ], | |
| 3938 | + "connector": "workday", | |
| 3939 | + "status": "actif", | |
| 3940 | + "region": "Gatineau" | |
| 3941 | + }, | |
| 3942 | + { | |
| 3943 | + "id": "consignaction", | |
| 3944 | + "name": "Consignaction (AQRCB)", | |
| 3945 | + "url": "", | |
| 3946 | + "careers_url": "https://consignaction.wd10.myworkdayjobs.com/Consignaction_carrieres", | |
| 3947 | + "sectors": [ | |
| 3948 | + "Environnement" | |
| 3949 | + ], | |
| 3950 | + "connector": "workday", | |
| 3951 | + "status": "actif", | |
| 3952 | + "region": "Montréal" | |
| 3953 | + }, | |
| 3954 | + { | |
| 3955 | + "id": "dentalcorp", | |
| 3956 | + "name": "Dentalcorp", | |
| 3957 | + "url": "", | |
| 3958 | + "careers_url": "https://dentalcorp.wd3.myworkdayjobs.com/dentalcorp", | |
| 3959 | + "sectors": [ | |
| 3960 | + "Santé" | |
| 3961 | + ], | |
| 3962 | + "connector": "workday", | |
| 3963 | + "status": "actif", | |
| 3964 | + "region": "Montréal" | |
| 3965 | + }, | |
| 3966 | + { | |
| 3967 | + "id": "fedex", | |
| 3968 | + "name": "FedEx Express Canada", | |
| 3969 | + "url": "", | |
| 3970 | + "careers_url": "https://fedex.wd1.myworkdayjobs.com/FXE-Canada_External_Career_Site", | |
| 3971 | + "sectors": [ | |
| 3972 | + "Logistique" | |
| 3973 | + ], | |
| 3974 | + "connector": "workday", | |
| 3975 | + "status": "actif", | |
| 3976 | + "region": "Québec" | |
| 3977 | + }, | |
| 3978 | + { | |
| 3979 | + "id": "fiserv", | |
| 3980 | + "name": "Fiserv", | |
| 3981 | + "url": "", | |
| 3982 | + "careers_url": "https://fiserv.wd5.myworkdayjobs.com/EXT", | |
| 3983 | + "sectors": [ | |
| 3984 | + "Finance" | |
| 3985 | + ], | |
| 3986 | + "connector": "workday", | |
| 3987 | + "status": "actif", | |
| 3988 | + "region": "Laval" | |
| 3989 | + }, | |
| 3990 | + { | |
| 3991 | + "id": "guillevin", | |
| 3992 | + "name": "Guillevin International", | |
| 3993 | + "url": "", | |
| 3994 | + "careers_url": "https://guillevin.wd3.myworkdayjobs.com/GIC", | |
| 3995 | + "sectors": [ | |
| 3996 | + "Distribution" | |
| 3997 | + ], | |
| 3998 | + "connector": "workday", | |
| 3999 | + "status": "actif", | |
| 4000 | + "region": "Montréal" | |
| 4001 | + }, | |
| 4002 | + { | |
| 4003 | + "id": "intelcomgroup", | |
| 4004 | + "name": "Intelcom (Dragonfly)", | |
| 4005 | + "url": "", | |
| 4006 | + "careers_url": "https://intelcomgroup.wd3.myworkdayjobs.com/Intelcom", | |
| 4007 | + "sectors": [ | |
| 4008 | + "Logistique" | |
| 4009 | + ], | |
| 4010 | + "connector": "workday", | |
| 4011 | + "status": "actif", | |
| 4012 | + "region": "Montréal" | |
| 4013 | + }, | |
| 4014 | + { | |
| 4015 | + "id": "jll", | |
| 4016 | + "name": "JLL", | |
| 4017 | + "url": "", | |
| 4018 | + "careers_url": "https://jll.wd1.myworkdayjobs.com/jllcareers", | |
| 4019 | + "sectors": [ | |
| 4020 | + "Immobilier" | |
| 4021 | + ], | |
| 4022 | + "connector": "workday", | |
| 4023 | + "status": "actif", | |
| 4024 | + "region": "Montréal" | |
| 4025 | + }, | |
| 4026 | + { | |
| 4027 | + "id": "openlane", | |
| 4028 | + "name": "OPENLANE Canada", | |
| 4029 | + "url": "", | |
| 4030 | + "careers_url": "https://openlane.wd115.myworkdayjobs.com/OPENLANE_Careers", | |
| 4031 | + "sectors": [ | |
| 4032 | + "Automobile" | |
| 4033 | + ], | |
| 4034 | + "connector": "workday", | |
| 4035 | + "status": "actif", | |
| 4036 | + "region": "Montréal" | |
| 4037 | + }, | |
| 4038 | + { | |
| 4039 | + "id": "shell", | |
| 4040 | + "name": "Shell Canada", | |
| 4041 | + "url": "", | |
| 4042 | + "careers_url": "https://shell.wd3.myworkdayjobs.com/ShellCareers", | |
| 4043 | + "sectors": [ | |
| 4044 | + "Énergie" | |
| 4045 | + ], | |
| 4046 | + "connector": "workday", | |
| 4047 | + "status": "actif", | |
| 4048 | + "region": "Montréal-Est" | |
| 4049 | + }, | |
| 4050 | + { | |
| 4051 | + "id": "simons", | |
| 4052 | + "name": "La Maison Simons", | |
| 4053 | + "url": "", | |
| 4054 | + "careers_url": "https://simons.wd10.myworkdayjobs.com/Simons_Site", | |
| 4055 | + "sectors": [ | |
| 4056 | + "Commerce de détail" | |
| 4057 | + ], | |
| 4058 | + "connector": "workday", | |
| 4059 | + "status": "actif", | |
| 4060 | + "region": "Québec" | |
| 4061 | + }, | |
| 4062 | + { | |
| 4063 | + "id": "tjx", | |
| 4064 | + "name": "TJX Canada (Winners, HomeSense, Marshalls)", | |
| 4065 | + "url": "", | |
| 4066 | + "careers_url": "https://tjx.wd1.myworkdayjobs.com/TJX_EXTERNAL", | |
| 4067 | + "sectors": [ | |
| 4068 | + "Commerce de détail" | |
| 4069 | + ], | |
| 4070 | + "connector": "workday", | |
| 4071 | + "status": "actif", | |
| 4072 | + "region": "Gatineau" | |
| 4073 | + }, | |
| 4074 | + { | |
| 4075 | + "id": "vfc", | |
| 4076 | + "name": "VF Corporation (The North Face, Vans)", | |
| 4077 | + "url": "", | |
| 4078 | + "careers_url": "https://vfc.wd5.myworkdayjobs.com/vfc_careers", | |
| 4079 | + "sectors": [ | |
| 4080 | + "Commerce de détail" | |
| 4081 | + ], | |
| 4082 | + "connector": "workday", | |
| 4083 | + "status": "actif", | |
| 4084 | + "region": "Montréal" | |
| 4085 | + }, | |
| 4086 | + { | |
| 4087 | + "id": "zoll", | |
| 4088 | + "name": "ZOLL Medical", | |
| 4089 | + "url": "", | |
| 4090 | + "careers_url": "https://zoll.wd5.myworkdayjobs.com/ZOLLMedicalCorp", | |
| 4091 | + "sectors": [ | |
| 4092 | + "Santé" | |
| 4093 | + ], | |
| 4094 | + "connector": "workday", | |
| 4095 | + "status": "actif", | |
| 4096 | + "region": "Montréal" | |
| 4097 | + }, | |
| 4098 | + { | |
| 4099 | + "id": "acadierouge", | |
| 4100 | + "name": "Air Canada Rouge", | |
| 4101 | + "url": "", | |
| 4102 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/acvrouge/CANDIDATEPORTAL", | |
| 4103 | + "sectors": [ | |
| 4104 | + "Aérospatiale" | |
| 4105 | + ], | |
| 4106 | + "connector": "dayforce", | |
| 4107 | + "status": "actif", | |
| 4108 | + "region": "Montréal" | |
| 4109 | + }, | |
| 4110 | + { | |
| 4111 | + "id": "groupeagf", | |
| 4112 | + "name": "Groupe AGF", | |
| 4113 | + "url": "", | |
| 4114 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/agfgroup/CANDIDATEPORTAL", | |
| 4115 | + "sectors": [ | |
| 4116 | + "Construction" | |
| 4117 | + ], | |
| 4118 | + "connector": "dayforce", | |
| 4119 | + "status": "actif", | |
| 4120 | + "region": "Longueuil" | |
| 4121 | + }, | |
| 4122 | + { | |
| 4123 | + "id": "portquebec", | |
| 4124 | + "name": "Administration portuaire de Québec", | |
| 4125 | + "url": "", | |
| 4126 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/apq/CANDIDATEPORTAL", | |
| 4127 | + "sectors": [ | |
| 4128 | + "Transport" | |
| 4129 | + ], | |
| 4130 | + "connector": "dayforce", | |
| 4131 | + "status": "actif", | |
| 4132 | + "region": "Québec" | |
| 4133 | + }, | |
| 4134 | + { | |
| 4135 | + "id": "bpa", | |
| 4136 | + "name": "BPA (Experts-conseils)", | |
| 4137 | + "url": "", | |
| 4138 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/bpapointca/CANDIDATEPORTAL", | |
| 4139 | + "sectors": [ | |
| 4140 | + "Ingénierie" | |
| 4141 | + ], | |
| 4142 | + "connector": "dayforce", | |
| 4143 | + "status": "actif", | |
| 4144 | + "region": "Montréal" | |
| 4145 | + }, | |
| 4146 | + { | |
| 4147 | + "id": "excellencepeterbilt", | |
| 4148 | + "name": "Camions Excellence Peterbilt", | |
| 4149 | + "url": "", | |
| 4150 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/camion/CANDIDATEPORTAL", | |
| 4151 | + "sectors": [ | |
| 4152 | + "Automobile" | |
| 4153 | + ], | |
| 4154 | + "connector": "dayforce", | |
| 4155 | + "status": "actif", | |
| 4156 | + "region": "Sainte-Julie" | |
| 4157 | + }, | |
| 4158 | + { | |
| 4159 | + "id": "darefoods", | |
| 4160 | + "name": "Dare Foods", | |
| 4161 | + "url": "", | |
| 4162 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/darefoods/CANDIDATEPORTAL", | |
| 4163 | + "sectors": [ | |
| 4164 | + "Agroalimentaire" | |
| 4165 | + ], | |
| 4166 | + "connector": "dayforce", | |
| 4167 | + "status": "actif", | |
| 4168 | + "region": "Sainte-Marthe-sur-le-Lac" | |
| 4169 | + }, | |
| 4170 | + { | |
| 4171 | + "id": "eastpenn", | |
| 4172 | + "name": "East Penn Canada", | |
| 4173 | + "url": "", | |
| 4174 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/eastpenn/CANDIDATEPORTAL", | |
| 4175 | + "sectors": [ | |
| 4176 | + "Distribution" | |
| 4177 | + ], | |
| 4178 | + "connector": "dayforce", | |
| 4179 | + "status": "actif", | |
| 4180 | + "region": "Laval" | |
| 4181 | + }, | |
| 4182 | + { | |
| 4183 | + "id": "eidosmontreal", | |
| 4184 | + "name": "Eidos-Montréal", | |
| 4185 | + "url": "", | |
| 4186 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/eic/CANDIDATEPORTAL", | |
| 4187 | + "sectors": [ | |
| 4188 | + "Jeu vidéo" | |
| 4189 | + ], | |
| 4190 | + "connector": "dayforce", | |
| 4191 | + "status": "actif", | |
| 4192 | + "region": "Montréal" | |
| 4193 | + }, | |
| 4194 | + { | |
| 4195 | + "id": "fastcocanada", | |
| 4196 | + "name": "Fastco Canada", | |
| 4197 | + "url": "", | |
| 4198 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/fastco/CANDIDATEPORTAL", | |
| 4199 | + "sectors": [ | |
| 4200 | + "Fabrication" | |
| 4201 | + ], | |
| 4202 | + "connector": "dayforce", | |
| 4203 | + "status": "actif", | |
| 4204 | + "region": "Pointe-Claire" | |
| 4205 | + }, | |
| 4206 | + { | |
| 4207 | + "id": "bleufeu", | |
| 4208 | + "name": "BLEUFEU (Festival d'été de Québec)", | |
| 4209 | + "url": "", | |
| 4210 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/feiq/CANDIDATEPORTAL", | |
| 4211 | + "sectors": [ | |
| 4212 | + "Divertissement" | |
| 4213 | + ], | |
| 4214 | + "connector": "dayforce", | |
| 4215 | + "status": "actif", | |
| 4216 | + "region": "Québec" | |
| 4217 | + }, | |
| 4218 | + { | |
| 4219 | + "id": "groupemaurice", | |
| 4220 | + "name": "Le Groupe Maurice", | |
| 4221 | + "url": "", | |
| 4222 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/gm/CANDIDATEPORTAL", | |
| 4223 | + "sectors": [ | |
| 4224 | + "Santé" | |
| 4225 | + ], | |
| 4226 | + "connector": "dayforce", | |
| 4227 | + "status": "actif", | |
| 4228 | + "region": "Montréal" | |
| 4229 | + }, | |
| 4230 | + { | |
| 4231 | + "id": "graycollection", | |
| 4232 | + "name": "Gray Collection (Groupe Antonopoulos)", | |
| 4233 | + "url": "", | |
| 4234 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/graycorp/CANDIDATEPORTAL", | |
| 4235 | + "sectors": [ | |
| 4236 | + "Hôtellerie" | |
| 4237 | + ], | |
| 4238 | + "connector": "dayforce", | |
| 4239 | + "status": "actif", | |
| 4240 | + "region": "Montréal" | |
| 4241 | + }, | |
| 4242 | + { | |
| 4243 | + "id": "groupech", | |
| 4244 | + "name": "Groupe CH (Canadiens de Montréal, Centre Bell)", | |
| 4245 | + "url": "", | |
| 4246 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/groupech/CANDIDATEPORTAL", | |
| 4247 | + "sectors": [ | |
| 4248 | + "Divertissement" | |
| 4249 | + ], | |
| 4250 | + "connector": "dayforce", | |
| 4251 | + "status": "actif", | |
| 4252 | + "region": "Montréal" | |
| 4253 | + }, | |
| 4254 | + { | |
| 4255 | + "id": "groupemach", | |
| 4256 | + "name": "Groupe Mach", | |
| 4257 | + "url": "", | |
| 4258 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/groupemach/CANDIDATEPORTAL", | |
| 4259 | + "sectors": [ | |
| 4260 | + "Immobilier" | |
| 4261 | + ], | |
| 4262 | + "connector": "dayforce", | |
| 4263 | + "status": "actif", | |
| 4264 | + "region": "Montréal" | |
| 4265 | + }, | |
| 4266 | + { | |
| 4267 | + "id": "jdsports", | |
| 4268 | + "name": "JD Sports Canada", | |
| 4269 | + "url": "", | |
| 4270 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/jdsf/CANDIDATEPORTAL", | |
| 4271 | + "sectors": [ | |
| 4272 | + "Commerce de détail" | |
| 4273 | + ], | |
| 4274 | + "connector": "dayforce", | |
| 4275 | + "status": "actif", | |
| 4276 | + "region": "Montréal" | |
| 4277 | + }, | |
| 4278 | + { | |
| 4279 | + "id": "lauracanada", | |
| 4280 | + "name": "Laura Canada", | |
| 4281 | + "url": "", | |
| 4282 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/laurashoppe/CANDIDATEPORTAL", | |
| 4283 | + "sectors": [ | |
| 4284 | + "Commerce de détail" | |
| 4285 | + ], | |
| 4286 | + "connector": "dayforce", | |
| 4287 | + "status": "actif", | |
| 4288 | + "region": "Laval" | |
| 4289 | + }, | |
| 4290 | + { | |
| 4291 | + "id": "lavieenrose", | |
| 4292 | + "name": "La Vie en Rose", | |
| 4293 | + "url": "", | |
| 4294 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/lavieenrose/CANDIDATEPORTAL", | |
| 4295 | + "sectors": [ | |
| 4296 | + "Commerce de détail" | |
| 4297 | + ], | |
| 4298 | + "connector": "dayforce", | |
| 4299 | + "status": "actif", | |
| 4300 | + "region": "Montréal" | |
| 4301 | + }, | |
| 4302 | + { | |
| 4303 | + "id": "nationex", | |
| 4304 | + "name": "Nationex", | |
| 4305 | + "url": "", | |
| 4306 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/nationex/CANDIDATEPORTAL", | |
| 4307 | + "sectors": [ | |
| 4308 | + "Logistique" | |
| 4309 | + ], | |
| 4310 | + "connector": "dayforce", | |
| 4311 | + "status": "actif", | |
| 4312 | + "region": "Longueuil" | |
| 4313 | + }, | |
| 4314 | + { | |
| 4315 | + "id": "realstar", | |
| 4316 | + "name": "Realstar", | |
| 4317 | + "url": "", | |
| 4318 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/realstar/CANDIDATEPORTAL", | |
| 4319 | + "sectors": [ | |
| 4320 | + "Immobilier" | |
| 4321 | + ], | |
| 4322 | + "connector": "dayforce", | |
| 4323 | + "status": "actif", | |
| 4324 | + "region": "Montréal" | |
| 4325 | + }, | |
| 4326 | + { | |
| 4327 | + "id": "reflector", | |
| 4328 | + "name": "Reflector Entertainment", | |
| 4329 | + "url": "", | |
| 4330 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/ref/CANDIDATEPORTAL", | |
| 4331 | + "sectors": [ | |
| 4332 | + "Jeu vidéo" | |
| 4333 | + ], | |
| 4334 | + "connector": "dayforce", | |
| 4335 | + "status": "actif", | |
| 4336 | + "region": "Montréal" | |
| 4337 | + }, | |
| 4338 | + { | |
| 4339 | + "id": "runningroom", | |
| 4340 | + "name": "Running Room Canada", | |
| 4341 | + "url": "", | |
| 4342 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/runningroom/CANDIDATEPORTAL", | |
| 4343 | + "sectors": [ | |
| 4344 | + "Commerce de détail" | |
| 4345 | + ], | |
| 4346 | + "connector": "dayforce", | |
| 4347 | + "status": "actif", | |
| 4348 | + "region": "Montréal" | |
| 4349 | + }, | |
| 4350 | + { | |
| 4351 | + "id": "soprema", | |
| 4352 | + "name": "Soprema", | |
| 4353 | + "url": "", | |
| 4354 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/soprema/CANDIDATEPORTAL", | |
| 4355 | + "sectors": [ | |
| 4356 | + "Fabrication" | |
| 4357 | + ], | |
| 4358 | + "connector": "dayforce", | |
| 4359 | + "status": "actif", | |
| 4360 | + "region": "Drummondville" | |
| 4361 | + }, | |
| 4362 | + { | |
| 4363 | + "id": "spectrapremium", | |
| 4364 | + "name": "Spectra Premium", | |
| 4365 | + "url": "", | |
| 4366 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/spectra/CANDIDATEPORTAL", | |
| 4367 | + "sectors": [ | |
| 4368 | + "Fabrication" | |
| 4369 | + ], | |
| 4370 | + "connector": "dayforce", | |
| 4371 | + "status": "actif", | |
| 4372 | + "region": "Boucherville" | |
| 4373 | + }, | |
| 4374 | + { | |
| 4375 | + "id": "storagemart", | |
| 4376 | + "name": "StorageMart", | |
| 4377 | + "url": "", | |
| 4378 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/storagemart/CANDIDATEPORTAL", | |
| 4379 | + "sectors": [ | |
| 4380 | + "Services" | |
| 4381 | + ], | |
| 4382 | + "connector": "dayforce", | |
| 4383 | + "status": "actif", | |
| 4384 | + "region": "Québec" | |
| 4385 | + }, | |
| 4386 | + { | |
| 4387 | + "id": "unitedservices", | |
| 4388 | + "name": "United Services Group", | |
| 4389 | + "url": "", | |
| 4390 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/unitedservicesgroup/CANDIDATEPORTAL", | |
| 4391 | + "sectors": [ | |
| 4392 | + "Services" | |
| 4393 | + ], | |
| 4394 | + "connector": "dayforce", | |
| 4395 | + "status": "actif", | |
| 4396 | + "region": "Montréal" | |
| 4397 | + }, | |
| 4398 | + { | |
| 4399 | + "id": "vinfastcanada", | |
| 4400 | + "name": "VinFast Canada", | |
| 4401 | + "url": "", | |
| 4402 | + "careers_url": "https://jobs.dayforcehcm.com/fr-CA/vinfast/CANDIDATEPORTAL", | |
| 4403 | + "sectors": [ | |
| 4404 | + "Automobile" | |
| 4405 | + ], | |
| 4406 | + "connector": "dayforce", | |
| 4407 | + "status": "actif", | |
| 4408 | + "region": "Laval" | |
| 4409 | + } | |
| 4410 | + ] | |
| 3090 | 4411 | } |
modified
docs/CONFORMITE.md
+28 −1
@@ -6,7 +6,7 @@ Contact : contact@spboucher.ai | ||
| 6 | 6 | Fichier : docs/CONFORMITE.md |
| 7 | 7 | Rôle : Registre de conformité des sources de données — base d'accès, |
| 8 | 8 | attribution, lien de candidature, données personnelles |
| 9 | −Créé : 2026-08-18 Modifié : 2026-08-19 | |
| 9 | +Créé : 2026-08-18 Modifié : 2026-08-22 | |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
| 12 | 12 | |
@@ -81,11 +81,38 @@ Créé : 2026-08-18 Modifié : 2026-08-19 | ||
| 81 | 81 | - En attendant : **scraping poli maintenu** (Crawl-delay 5 s de robots.txt |
| 82 | 82 | respecté, fenêtre bornée, retries espacés 25 s) — inchangé. |
| 83 | 83 | |
| 84 | +## Vague B — nouvelles sources (2026-08-22) | |
| 85 | + | |
| 86 | +Campagne de découverte Serper/Tavily (requêtes `site:` par famille ATS + | |
| 87 | +termes de villes québécoises), sondage automatisé `scripts/probe_ats.py` | |
| 88 | +(85 groupes confirmés) et sondage manuel de la **nouvelle famille Dayforce**. | |
| 89 | + | |
| 90 | +| Famille / source | Sources | Base d'accès (vérifiée 2026-08-22) | Fréquence & politesse | Décision | | |
| 91 | +|---|---|---|---|---| | |
| 92 | +| **Dayforce HCM** (`dayforce`, NOUVELLE famille — jobs.dayforcehcm.com) : Le Groupe Maurice, Groupe CH, La Vie en Rose, Laura Canada, BPA, Soprema, Gray Collection, JD Sports, Eidos-Montréal, Reflector, Groupe Mach, Air Canada Rouge, Camions Excellence Peterbilt, Nationex, Groupe AGF, Fastco, VinFast, United Services Group, Port de Québec, BLEUFEU, Dare Foods, East Penn, Realstar, Running Room, Spectra Premium, StorageMart | **26** | **API JSON publique du frontal Next.js** — exactement celle que le navigateur de tout visiteur appelle : `GET /api/auth/csrf` (jeton anti-CSRF anonyme, aucune authentification) puis `POST /api/geo/<ns>/jobposting/search` (pages de 25, `paginationStart`) ; descriptions HTML complètes dès la liste, lieux géocodés (`stateCode`, lat/lng). Détail (`GET …/jobposting/<ns>/<culture>/<board>/<id>`) seulement pour les attributs PayClass/PayType, avec **cache BD + budget 80/cycle**. `cultureCode fr-CA` : version française quand l'employeur la publie. | 0,8 req/s ; 1 à 6 requêtes liste/cycle par employeur | Connecté | | |
| 93 | +| **Workday** — ajouts (Simons, Intelcom, Guillevin, Consignaction, Cineplex, TJX, FedEx Express, Abbott, Aritzia, Fiserv, JLL, Shell, Allstate, Dentalcorp, OPENLANE, VF, ZOLL) | +17 | API JSON publique `cxs` du tenant (famille existante) | inchangé | Connecté | | |
| 94 | +| **SmartRecruiters** — ajouts (Renaud-Bray, Structube, Linen Chest, Lemay, Sodexo Canada, GURU, H&M, Sika, Artelia, Trupanion, California Closets, Centre multiethnique de Québec, École des entrepreneurs du Québec) | +13 | API publique `api.smartrecruiters.com` (famille existante) | inchangé | Connecté | | |
| 95 | +| **Greenhouse** — ajouts (Coveo, Laporte, KRAFTON Montréal, Cloud Chamber, Sony Pictures Imageworks, Toboggan Labs, LoiZéro, Latys, Terrestar, Royal Vet, AutoTrader, La Senza, Alo Yoga, Mejuri, Club Monaco, Keel, Lyft) | +17 | API publique `boards-api.greenhouse.io` (famille existante) | inchangé | Connecté | | |
| 96 | +| **Workable** — ajouts (Keywords Studios, FLO/AddÉnergie, EDC, Delmar, Damotech, Financeit, Starlink Aviation, Charlotte Tilbury, CSN Collision, Rentokil, CTS Foods) | +11 | API publique `apply.workable.com/api/v3` (famille existante) | inchangé | Connecté | | |
| 97 | +| **Lever** — ajouts (Ecosystem, Telesat, Cologix, LRDG, Maquette Virtuelle, Daniels Health) | +6 | API publique `api.lever.co/v0/postings` (famille existante) | inchangé | Connecté | | |
| 98 | +| **Breezy** — ajouts (Turbulent, Progesys, Panda7, BDL Énergie, Sense Ingénierie, Black & McDonald, TELUS Santé Cliniques, Lindt Canada) | +8 | API publique `<org>.breezy.hr/json` (famille existante) | inchangé | Connecté | | |
| 99 | +| **Recruitee** — ajouts (STAS, Agile DSS, Eurofins EnvironeX, Teknion Roy & Breton, Avantage Plus, Projevia, Pivot + Edge) | +7 | API publique `<org>.recruitee.com/api/offers` (famille existante) | inchangé | Connecté | | |
| 100 | +| **Ashby** — ajouts (Alan, Exegy, Billups, Lambda, Neo Financial) | +5 | API GraphQL publique du babillard (famille existante) | inchangé | Connecté | | |
| 101 | + | |
| 84 | 102 | ## Sources écartées |
| 85 | 103 | |
| 86 | 104 | | Source | Raison | |
| 87 | 105 | |---|---| |
| 88 | 106 | | **Québec Emploi** (quebecemploi.gouv.qc.ca) | Accès derrière **authentification clicSÉQUR** — pas de flux public prévu pour la diffusion ; écarté (2026-08-18). | |
| 107 | +| **Solution SFT** (workable, 694 offres QC) | **Agence de placement** en santé : mandats démultipliés par région/quart qui noieraient les offres directes (694 fiches d'un coup) — écartée (2026-08-22). | | |
| 108 | +| **Jobgether** (lever) | Agrégateur d'offres à distance, pas un employeur direct — contraire au principe « zéro boîte noire » (2026-08-22). | | |
| 109 | +| **Aylo** (greenhouse, Montréal) | Employeur techno montréalais réel mais éditeur de contenu adulte — écarté par choix éditorial (plateforme grand public) (2026-08-22). | | |
| 110 | +| **SGS, Red Bull, Rituals** (smartrecruiters) | Babillards mondiaux joignables mais **0 offre au Québec** au sondage du 2026-08-22. | | |
| 111 | +| **Arc'teryx, Lime, World Gym Québec, Sherbrooke OEM, KATASA, Plant Products, Lovisa, ANINE BING, Pinax, CIMEQ** | API du slug candidat **introuvable** (portail fermé ou babillard HTML sans flux) — sondage 2026-08-22. | | |
| 112 | +| **Inizio/Ashfield, Elanco, Parsons, Philips, Alfa Laval, GM Canada** (workday) | Tenant/site Workday détecté dans Google mais **API cxs muette** sous ce site (site carrières renommé) — à re-sonder plus tard (2026-08-22). | | |
| 113 | +| **Sobeys, Vestis, VetStrategy, Lindt** (dayforce) | Namespace Dayforce joignable mais **babillard CANDIDATEPORTAL vide** (recrutement via un autre canal) (2026-08-22). | | |
| 114 | +| **Eldorado Gold Lamaque** (dayforce) | 1 seule fiche « candidature spontanée stagiaire » — pas d'offres réelles pour l'instant ; à re-sonder (2026-08-22). | | |
| 115 | +| **Joya, Cloval, Mondial Tissus, EKIP RH, Aftral** (découvertes Serper) | Employeurs **français** (Saint-Genis-Laval ≠ Laval QC) — faux positifs du terme « Laval » (2026-08-22). | | |
| 89 | 116 | | **Canada Vie** (career5.successfactors.eu / careers.canadalife.com) | Portail SuccessFactors **héritage** (career5, session requise) + site AEM sans sitemap d'offres ; aucun flux public simple (2026-08-19). | |
| 90 | 117 | | **Groupe Dynamite** (careers.groupedynamite.com/gdi) | Portail iCIMS nouvelle génération rendu par JS ; le babillard iframe hérité (`frcareers-groupedynamite.icims.com`) est **vide** (2026-08-19). | |
| 91 | 118 | | **Jack Astor's / SIR Corp** (careersen-sircorp.icims.com) | Babillard fonctionnel mais **0 offre au Québec** (recherches lieu et mot-clé, 2026-08-19). | |
modified
docs/connecteurs/INDEX.md
+271 −160
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-08-22 22:14 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 | −**240 employeurs directs** connectés via **20 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **14102 offres actives** (11238 directes, 2864 portails ; 91 masquées comme doublons inter-sources, soit 14011 visibles). 265 fiches. | |
| 17 | +**350 employeurs directs** connectés via **21 plateformes ATS** + **3 portails agrégateurs** + le canal de **dépôt direct** — **15989 offres actives** (13695 directes, 2294 portails ; 107 masquées comme doublons inter-sources, soit 15882 visibles). 376 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,280 +22,391 @@ 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) | 41 | 3570 | 60 % | 84 % | | |
| 26 | −| [`workland`](ats-workland.md) | 1 | 1238 | 36 % | 100 % | | |
| 27 | −| [`successfactors`](ats-successfactors.md) | 5 | 1224 | 18 % | 86 % | | |
| 28 | −| [`njoyn`](ats-njoyn.md) | 6 | 956 | 81 % | 6 % | | |
| 29 | −| [`smartrecruiters`](ats-smartrecruiters.md) | 28 | 949 | 16 % | 100 % | | |
| 30 | −| [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 842 | 8 % | 0 % | | |
| 31 | −| [`workable`](ats-workable.md) | 19 | 649 | 4 % | 100 % | | |
| 32 | −| [`lever`](ats-lever.md) | 19 | 454 | 21 % | 97 % | | |
| 33 | −| [`bamboohr`](ats-bamboohr.md) | 31 | 227 | 13 % | 100 % | | |
| 34 | −| [`ashby`](ats-ashby.md) | 11 | 213 | 12 % | 75 % | | |
| 35 | −| [`greenhouse`](ats-greenhouse.md) | 19 | 192 | 11 % | 100 % | | |
| 36 | −| [`taleo_tbe`](ats-taleo_tbe.md) | 6 | 143 | 38 % | 0 % | | |
| 37 | −| [`breezy`](ats-breezy.md) | 14 | 135 | 58 % | 98 % | | |
| 38 | −| [`recruitee`](ats-recruitee.md) | 11 | 130 | 9 % | 98 % | | |
| 39 | −| [`taleo`](ats-taleo.md) | 4 | 71 | 0 % | 100 % | | |
| 40 | −| [`digitalrecruiters`](ats-digitalrecruiters.md) | 2 | 68 | 90 % | 41 % | | |
| 41 | −| [`icims`](ats-icims.md) | 6 | 60 | 40 % | 90 % | | |
| 42 | −| [`ultipro`](ats-ultipro.md) | 3 | 58 | 60 % | 38 % | | |
| 43 | −| [`custom`](ats-custom.md) | 1 | 31 | 0 % | 0 % | | |
| 44 | −| [`adp`](ats-adp.md) | 5 | 28 | 71 % | 43 % | | |
| 25 | +| [`workday`](ats-workday.md) | 58 | 4108 | 59 % | 85 % | | |
| 26 | +| [`smartrecruiters`](ats-smartrecruiters.md) | 41 | 1456 | 19 % | 100 % | | |
| 27 | +| [`workland`](ats-workland.md) | 1 | 1301 | 34 % | 100 % | | |
| 28 | +| [`successfactors`](ats-successfactors.md) | 5 | 1186 | 18 % | 99 % | | |
| 29 | +| [`njoyn`](ats-njoyn.md) | 6 | 1148 | 68 % | 91 % | | |
| 30 | +| [`wpjobmanager`](ats-wpjobmanager.md) | 8 | 874 | 8 % | 100 % | | |
| 31 | +| [`workable`](ats-workable.md) | 30 | 735 | 9 % | 100 % | | |
| 32 | +| [`dayforce`](ats-dayforce.md) | 26 | 677 | 5 % | 100 % | | |
| 33 | +| [`lever`](ats-lever.md) | 25 | 505 | 21 % | 96 % | | |
| 34 | +| [`greenhouse`](ats-greenhouse.md) | 36 | 366 | 13 % | 99 % | | |
| 35 | +| [`bamboohr`](ats-bamboohr.md) | 31 | 231 | 13 % | 100 % | | |
| 36 | +| [`recruitee`](ats-recruitee.md) | 18 | 224 | 9 % | 98 % | | |
| 37 | +| [`ashby`](ats-ashby.md) | 16 | 219 | 15 % | 77 % | | |
| 38 | +| [`breezy`](ats-breezy.md) | 22 | 188 | 44 % | 94 % | | |
| 39 | +| [`taleo_tbe`](ats-taleo_tbe.md) | 6 | 142 | 37 % | 36 % | | |
| 40 | +| [`taleo`](ats-taleo.md) | 4 | 83 | 0 % | 100 % | | |
| 41 | +| [`digitalrecruiters`](ats-digitalrecruiters.md) | 2 | 73 | 92 % | 77 % | | |
| 42 | +| [`icims`](ats-icims.md) | 6 | 61 | 41 % | 93 % | | |
| 43 | +| [`ultipro`](ats-ultipro.md) | 3 | 60 | 57 % | 100 % | | |
| 44 | +| [`custom`](ats-custom.md) | 1 | 31 | 32 % | 87 % | | |
| 45 | +| [`adp`](ats-adp.md) | 5 | 27 | 70 % | 100 % | | |
| 45 | 46 | |
| 46 | 47 | ## Portails agrégateurs & dépôt |
| 47 | 48 | |
| 48 | 49 | | Source | Actives | Salaire | Dernier sync | |
| 49 | 50 | |---|---|---|---| |
| 50 | −| [Espresso-Jobs](espresso_jobs.md) | 309 | 23 % | 2026-08-19 03:55 | | |
| 51 | −| [Guichet-Emplois (Canada)](guichet_emplois.md) | 502 | 99 % | 2026-08-19 04:02 | | |
| 52 | −| [Jobillico](jobillico.md) | 2053 | 37 % | 2026-08-19 04:10 | | |
| 51 | +| [Espresso-Jobs](espresso_jobs.md) | 305 | 21 % | 2026-08-22 21:11 | | |
| 52 | +| [Guichet-Emplois (Canada)](guichet_emplois.md) | 505 | 99 % | 2026-08-22 21:14 | | |
| 53 | +| [Jobillico](jobillico.md) | 1484 | 17 % | 2026-08-22 21:21 | | |
| 53 | 54 | | [Dépôt direct employeurs](depot-direct.md) | 0 (0 en modération) | — | au fil de l'eau | |
| 54 | 55 | |
| 55 | 56 | ## Employeurs directs (par volume d'offres actives) |
| 56 | 57 | |
| 57 | 58 | | Employeur | ATS | Actives | Salaire | GPS | Dernier sync OK | |
| 58 | 59 | |---|---|---|---|---|---| |
| 59 | −| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1238 | 36 % | 100 % | ✅ | | |
| 60 | −| [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 1012 | 61 % | 63 % | ✅ | | |
| 61 | −| [Walmart Canada](walmart.md) | [`workday`](ats-workday.md) | 979 | 93 % | 91 % | ✅ | | |
| 62 | −| [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 847 | 0 % | 100 % | ✅ | | |
| 63 | −| [Santé Québec — Montréal](sante_montreal.md) | [`njoyn`](ats-njoyn.md) | 762 | 97 % | 8 % | ✅ | | |
| 60 | +| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | [`workland`](ats-workland.md) | 1301 | 34 % | 100 % | ✅ | | |
| 61 | +| [Couche-Tard / Circle K](circlek.md) | [`workday`](ats-workday.md) | 1019 | 61 % | 63 % | ✅ | | |
| 62 | +| [Walmart Canada](walmart.md) | [`workday`](ats-workday.md) | 1008 | 92 % | 92 % | ✅ | | |
| 63 | +| [Bombardier](bombardier.md) | [`successfactors`](ats-successfactors.md) | 812 | 0 % | 100 % | ✅ | | |
| 64 | +| [Santé Québec — Montréal](sante_montreal.md) | [`njoyn`](ats-njoyn.md) | 764 | 97 % | 98 % | ✅ | | |
| 64 | 65 | | [TEHORA](tehora.md) | [`workable`](ats-workable.md) | 346 | 0 % | 100 % | ✅ | |
| 65 | −| [Go RH](gorh.md) | [`lever`](ats-lever.md) | 266 | 18 % | 98 % | ✅ | | |
| 66 | −| [Mouvement Desjardins](desjardins.md) | [`workday`](ats-workday.md) | 241 | 2 % | 94 % | ✅ | | |
| 67 | −| [CIMA+](cima2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 221 | 0 % | 100 % | ✅ | | |
| 68 | −| [Université McGill](mcgill.md) | [`workday`](ats-workday.md) | 193 | 70 % | 100 % | ✅ | | |
| 69 | −| [CISSS de Laval](cisss_laval.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 149 | 1 % | 0 % | ✅ | | |
| 70 | −| [CISSS de l'Abitibi-Témiscamingue](cisss_abitibi.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 141 | 0 % | 0 % | ✅ | | |
| 71 | −| [Reitmans](reitmanscanadalteltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 138 | 22 % | 100 % | ✅ | | |
| 72 | −| [CISSS des Laurentides](cisss_laurentides.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 130 | 12 % | 0 % | ✅ | | |
| 73 | −| [CGI](cgi.md) | [`njoyn`](ats-njoyn.md) | 127 | 0 % | 0 % | ✅ | | |
| 74 | −| [CISSS de Lanaudière](cisss_lanaudiere.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 124 | 4 % | 0 % | ✅ | | |
| 75 | −| [Ubisoft](ubisoft.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 123 | 0 % | 100 % | ✅ | | |
| 76 | −| [CISSS de Chaudière-Appalaches](cisss_chaudiere_appalaches.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 112 | 8 % | 0 % | ✅ | | |
| 77 | −| [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 106 | 88 % | 79 % | ✅ | | |
| 78 | −| [Domtar](domtar.md) | [`successfactors`](ats-successfactors.md) | 106 | 0 % | 99 % | ✅ | | |
| 79 | −| [Deloitte Canada](deloitte.md) | [`successfactors`](ats-successfactors.md) | 105 | 96 % | 0 % | ✅ | | |
| 80 | −| [CISSS de l'Outaouais](cisss_outaouais.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 101 | 31 % | 0 % | ✅ | | |
| 81 | −| [Cascades](cascades.md) | [`successfactors`](ats-successfactors.md) | 100 | 77 % | 100 % | ✅ | | |
| 82 | −| [Sépaq](sepaq.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 99 | 55 % | 0 % | ✅ | | |
| 66 | +| [CGI](cgi.md) | [`njoyn`](ats-njoyn.md) | 316 | 0 % | 95 % | ✅ | | |
| 67 | +| [Go RH](gorh.md) | [`lever`](ats-lever.md) | 271 | 18 % | 98 % | ✅ | | |
| 68 | +| [Mouvement Desjardins](desjardins.md) | [`workday`](ats-workday.md) | 255 | 2 % | 93 % | ✅ | | |
| 69 | +| [CIMA+](cima2.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 239 | 0 % | 100 % | ✅ | | |
| 70 | +| [Université McGill](mcgill.md) | [`workday`](ats-workday.md) | 194 | 73 % | 100 % | ✅ | | |
| 71 | +| [CISSS de Laval](cisss_laval.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 149 | 1 % | 100 % | ✅ | | |
| 72 | +| [CISSS des Laurentides](cisss_laurentides.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 142 | 11 % | 100 % | ✅ | | |
| 73 | +| [CISSS de l'Abitibi-Témiscamingue](cisss_abitibi.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 140 | 0 % | 100 % | ✅ | | |
| 74 | +| [La Vie en Rose](lavieenrose.md) | [`dayforce`](ats-dayforce.md) | 138 | 4 % | 100 % | ✅ | | |
| 75 | +| [Reitmans](reitmanscanadalteltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 137 | 23 % | 100 % | ✅ | | |
| 76 | +| [Sodexo Canada](sodexocanadaltd.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 135 | 82 % | 100 % | ✅ | | |
| 77 | +| [Consignaction (AQRCB)](consignaction.md) | [`workday`](ats-workday.md) | 134 | 90 % | 100 % | ✅ | | |
| 78 | +| [CISSS de Lanaudière](cisss_lanaudiere.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 132 | 5 % | 100 % | ✅ | | |
| 79 | +| [Ubisoft](ubisoft.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 127 | 0 % | 100 % | ✅ | | |
| 80 | +| [BMO Groupe financier](bmo.md) | [`workday`](ats-workday.md) | 121 | 86 % | 82 % | ✅ | | |
| 81 | +| [Artelia Canada](artelia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 115 | 0 % | 98 % | ✅ | | |
| 82 | +| [CISSS de Chaudière-Appalaches](cisss_chaudiere_appalaches.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 115 | 9 % | 100 % | ✅ | | |
| 83 | +| [CISSS de l'Outaouais](cisss_outaouais.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 108 | 31 % | 100 % | ✅ | | |
| 84 | +| [Deloitte Canada](deloitte.md) | [`successfactors`](ats-successfactors.md) | 105 | 96 % | 100 % | ✅ | | |
| 85 | +| [Domtar](domtar.md) | [`successfactors`](ats-successfactors.md) | 102 | 0 % | 99 % | ✅ | | |
| 86 | +| [Cascades](cascades.md) | [`successfactors`](ats-successfactors.md) | 100 | 75 % | 100 % | ✅ | | |
| 87 | +| [Le Groupe Maurice](groupemaurice.md) | [`dayforce`](ats-dayforce.md) | 99 | 0 % | 100 % | ✅ | | |
| 88 | +| [Sépaq](sepaq.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 98 | 54 % | 8 % | ✅ | | |
| 89 | +| [Dentalcorp](dentalcorp.md) | [`workday`](ats-workday.md) | 97 | 13 % | 99 % | ✅ | | |
| 90 | +| [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 83 | 1 % | 100 % | ✅ | | |
| 91 | +| [Linen Chest](linenchest.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 82 | 9 % | 100 % | ✅ | | |
| 83 | 92 | | [Genetec](genetec_inc.md) | [`workable`](ats-workable.md) | 80 | 0 % | 100 % | ✅ | |
| 84 | −| [Vidéotron](videotron.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 80 | 14 % | 100 % | ✅ | | |
| 85 | −| [MaintainX](maintainx.md) | [`ashby`](ats-ashby.md) | 78 | 6 % | 83 % | ✅ | | |
| 86 | −| [Agropur](agropur.md) | [`workday`](ats-workday.md) | 75 | 93 % | 99 % | ✅ | | |
| 87 | −| [Airbus Canada](airbus.md) | [`workday`](ats-workday.md) | 75 | 1 % | 100 % | ✅ | | |
| 88 | −| [Groupe Banque TD](td.md) | [`workday`](ats-workday.md) | 69 | 99 % | 100 % | ✅ | | |
| 89 | −| [EMCO](emcocorporation.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 67 | 48 % | 100 % | ✅ | | |
| 90 | −| [Hydro-Québec](hydroquebec.md) | [`successfactors`](ats-successfactors.md) | 66 | 61 % | 0 % | ✅ | | |
| 91 | −| [Autodesk](autodesk.md) | [`workday`](ats-workday.md) | 65 | 91 % | 48 % | ✅ | | |
| 92 | −| [Banque CIBC](cibc.md) | [`workday`](ats-workday.md) | 65 | 0 % | 100 % | ✅ | | |
| 93 | −| [Groupe Canam](groupecanam.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 65 | 66 % | 98 % | ✅ | | |
| 94 | −| [CHU de Québec — Université Laval](chu_quebec.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 60 | 10 % | 0 % | ✅ | | |
| 95 | −| [ANCIA Personnel](anciapersonnelinc.md) | [`recruitee`](ats-recruitee.md) | 59 | 10 % | 100 % | ✅ | | |
| 96 | −| [Lightspeed Commerce](lightspeedhq.md) | [`ashby`](ats-ashby.md) | 56 | 7 % | 98 % | ✅ | | |
| 97 | −| [CAE](cae.md) | [`workday`](ats-workday.md) | 55 | 7 % | 93 % | ✅ | | |
| 98 | −| [Manuvie](manulife.md) | [`workday`](ats-workday.md) | 51 | 90 % | 75 % | ✅ | | |
| 99 | −| [Cogeco](cogeco.md) | [`workday`](ats-workday.md) | 50 | 18 % | 56 % | ✅ | | |
| 100 | −| [Beneva](beneva.md) | [`workday`](ats-workday.md) | 48 | 2 % | 100 % | ✅ | | |
| 101 | −| [Cohere](cohere.md) | [`ashby`](ats-ashby.md) | 46 | 17 % | 37 % | ✅ | | |
| 93 | +| [Vidéotron](videotron.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 77 | 17 % | 100 % | ✅ | | |
| 94 | +| [MaintainX](maintainx.md) | [`ashby`](ats-ashby.md) | 72 | 6 % | 86 % | ✅ | | |
| 95 | +| [Agropur](agropur.md) | [`workday`](ats-workday.md) | 71 | 94 % | 99 % | ✅ | | |
| 96 | +| [Gray Collection (Groupe Antonopoulos)](graycollection.md) | [`dayforce`](ats-dayforce.md) | 71 | 0 % | 100 % | ✅ | | |
| 97 | +| [Groupe Banque TD](td.md) | [`workday`](ats-workday.md) | 71 | 97 % | 100 % | ✅ | | |
| 98 | +| [Renaud-Bray](renaud_bray.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 71 | 1 % | 100 % | ✅ | | |
| 99 | +| [Hydro-Québec](hydroquebec.md) | [`successfactors`](ats-successfactors.md) | 67 | 55 % | 81 % | ✅ | | |
| 100 | +| [Autodesk](autodesk.md) | [`workday`](ats-workday.md) | 65 | 89 % | 46 % | ✅ | | |
| 101 | +| [EMCO](emcocorporation.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 64 | 45 % | 100 % | ✅ | | |
| 102 | +| [Groupe Canam](groupecanam.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 64 | 66 % | 98 % | ✅ | | |
| 103 | +| [Lightspeed Commerce](lightspeedhq.md) | [`ashby`](ats-ashby.md) | 61 | 8 % | 98 % | ✅ | | |
| 104 | +| [ANCIA Personnel](anciapersonnelinc.md) | [`recruitee`](ats-recruitee.md) | 60 | 10 % | 100 % | ✅ | | |
| 105 | +| [CHU de Québec — Université Laval](chu_quebec.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 59 | 7 % | 100 % | ✅ | | |
| 106 | +| [Banque CIBC](cibc.md) | [`workday`](ats-workday.md) | 56 | 0 % | 100 % | ✅ | | |
| 107 | +| [CAE](cae.md) | [`workday`](ats-workday.md) | 56 | 7 % | 93 % | ✅ | | |
| 108 | +| [Manuvie](manulife.md) | [`workday`](ats-workday.md) | 55 | 91 % | 69 % | ✅ | | |
| 109 | +| [BPA (Experts-conseils)](bpa.md) | [`dayforce`](ats-dayforce.md) | 51 | 0 % | 100 % | ✅ | | |
| 110 | +| [Laura Canada](lauracanada.md) | [`dayforce`](ats-dayforce.md) | 50 | 0 % | 100 % | ✅ | | |
| 111 | +| [Eurofins EnvironeX](eurofinsenvironex.md) | [`recruitee`](ats-recruitee.md) | 47 | 0 % | 100 % | ✅ | | |
| 112 | +| [JD Sports Canada](jdsports.md) | [`dayforce`](ats-dayforce.md) | 47 | 0 % | 100 % | ✅ | | |
| 113 | +| [Santé Québec](sante_quebec.md) | [`digitalrecruiters`](ats-digitalrecruiters.md) | 46 | 98 % | 63 % | ✅ | | |
| 114 | +| [Cogeco](cogeco.md) | [`workday`](ats-workday.md) | 45 | 18 % | 60 % | ✅ | | |
| 115 | +| [Cohere](cohere.md) | [`ashby`](ats-ashby.md) | 44 | 16 % | 36 % | ✅ | | |
| 116 | +| [McKesson Canada](mckesson.md) | [`workday`](ats-workday.md) | 44 | 80 % | 89 % | ✅ | | |
| 117 | +| [Techo-Bloc](techo_bloc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 44 | 59 % | 100 % | ✅ | | |
| 102 | 118 | | [Investissements PSP](investpsp.md) | [`workday`](ats-workday.md) | 43 | 5 % | 100 % | ✅ | |
| 103 | −| [McKesson Canada](mckesson.md) | [`workday`](ats-workday.md) | 43 | 84 % | 86 % | ✅ | | |
| 104 | 119 | | [SOGECLAIR](sogeclair.md) | [`workable`](ats-workable.md) | 43 | 2 % | 100 % | ✅ | |
| 120 | +| [La Maison Simons](simons.md) | [`workday`](ats-workday.md) | 42 | 0 % | 93 % | ✅ | | |
| 105 | 121 | | [Levio](levio.md) | [`greenhouse`](ats-greenhouse.md) | 42 | 0 % | 100 % | ✅ | |
| 106 | −| [Santé Québec](sante_quebec.md) | [`digitalrecruiters`](ats-digitalrecruiters.md) | 41 | 98 % | 68 % | ✅ | | |
| 107 | −| [Techo-Bloc](techo_bloc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 40 | 50 % | 100 % | ✅ | | |
| 108 | −| [Behaviour Interactif](bhvr.md) | [`lever`](ats-lever.md) | 39 | 0 % | 100 % | ✅ | | |
| 109 | −| [Promutuel Assurance](promutuel.md) | [`workday`](ats-workday.md) | 37 | 0 % | 100 % | ✅ | | |
| 110 | −| [QSL](qsl.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 37 | 38 % | 100 % | ✅ | | |
| 111 | −| [Valsoft](valsoft_corp.md) | [`workable`](ats-workable.md) | 37 | 11 % | 100 % | ✅ | | |
| 112 | −| [Transat A.T.](transatat1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 36 | 6 % | 100 % | ✅ | | |
| 113 | −| [Side (PTW)](sideinc.md) | [`workable`](ats-workable.md) | 33 | 0 % | 100 % | ✅ | | |
| 114 | −| [Industries Lassonde](lassonde.md) | [`custom`](ats-custom.md) | 31 | 0 % | 0 % | ✅ | | |
| 115 | −| [Brand Momentum](brandmomentum.md) | [`breezy`](ats-breezy.md) | 30 | 70 % | 100 % | ✅ | | |
| 116 | −| [Service alimentaire Gordon](gfs.md) | [`workday`](ats-workday.md) | 30 | 73 % | 100 % | ✅ | | |
| 122 | +| [Camions Excellence Peterbilt](excellencepeterbilt.md) | [`dayforce`](ats-dayforce.md) | 40 | 0 % | 100 % | ✅ | | |
| 123 | +| [Transat A.T.](transatat1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 40 | 5 % | 100 % | ✅ | | |
| 124 | +| [Beneva](beneva.md) | [`workday`](ats-workday.md) | 39 | 3 % | 100 % | ✅ | | |
| 125 | +| [Behaviour Interactif](bhvr.md) | [`lever`](ats-lever.md) | 38 | 0 % | 100 % | ✅ | | |
| 126 | +| [TJX Canada (Winners, HomeSense, Marshalls)](tjx.md) | [`workday`](ats-workday.md) | 38 | 100 % | 100 % | ✅ | | |
| 127 | +| [Valsoft](valsoft_corp.md) | [`workable`](ats-workable.md) | 36 | 11 % | 100 % | ✅ | | |
| 128 | +| [Laporte Experts Conseils](laportefr.md) | [`greenhouse`](ats-greenhouse.md) | 34 | 0 % | 100 % | ✅ | | |
| 129 | +| [Promutuel Assurance](promutuel.md) | [`workday`](ats-workday.md) | 34 | 0 % | 100 % | ✅ | | |
| 130 | +| [Service alimentaire Gordon](gfs.md) | [`workday`](ats-workday.md) | 33 | 73 % | 100 % | ✅ | | |
| 131 | +| [Brand Momentum](brandmomentum.md) | [`breezy`](ats-breezy.md) | 32 | 72 % | 100 % | ✅ | | |
| 132 | +| [H&M](hmgroup.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 32 | 3 % | 100 % | ✅ | | |
| 133 | +| [QSL](qsl.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 32 | 22 % | 100 % | ✅ | | |
| 134 | +| [Industries Lassonde](lassonde.md) | [`custom`](ats-custom.md) | 31 | 32 % | 87 % | ✅ | | |
| 135 | +| [Intelcom (Dragonfly)](intelcomgroup.md) | [`workday`](ats-workday.md) | 31 | 0 % | 100 % | ✅ | | |
| 136 | +| [Side (PTW)](sideinc.md) | [`workable`](ats-workable.md) | 31 | 0 % | 100 % | ✅ | | |
| 137 | +| [Groupe CH (Canadiens de Montréal, Centre Bell)](groupech.md) | [`dayforce`](ats-dayforce.md) | 30 | 0 % | 100 % | ✅ | | |
| 138 | +| [Agnico Eagle Mines](agnico_eagle.md) | [`taleo`](ats-taleo.md) | 29 | 0 % | 100 % | ✅ | | |
| 117 | 139 | | [Altasciences](altasciences.md) | [`workday`](ats-workday.md) | 29 | 0 % | 100 % | ✅ | |
| 118 | −| [CDPQ — Caisse de dépôt et placement du Québec](cdpq.md) | [`workday`](ats-workday.md) | 28 | 0 % | 100 % | ✅ | | |
| 119 | −| [CSS des Découvreurs](cssdd.md) | [`digitalrecruiters`](ats-digitalrecruiters.md) | 27 | 78 % | 0 % | ✅ | | |
| 120 | −| [EXFO](exfo.md) | [`workday`](ats-workday.md) | 27 | 0 % | 100 % | ✅ | | |
| 140 | +| [CHUM](chum.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 29 | 0 % | 100 % | ✅ | | |
| 141 | +| [Coveo](coveofr.md) | [`greenhouse`](ats-greenhouse.md) | 29 | 0 % | 100 % | ✅ | | |
| 142 | +| [Soprema](soprema.md) | [`dayforce`](ats-dayforce.md) | 28 | 39 % | 100 % | ✅ | | |
| 143 | +| [CSS des Découvreurs](cssdd.md) | [`digitalrecruiters`](ats-digitalrecruiters.md) | 27 | 81 % | 100 % | ✅ | | |
| 144 | +| [Keywords Studios](keywords_intl1.md) | [`workable`](ats-workable.md) | 27 | 89 % | 100 % | ✅ | | |
| 121 | 145 | | [Scotts Canada (Fafard)](scottsmiraclegro.md) | [`workday`](ats-workday.md) | 27 | 4 % | 100 % | ✅ | |
| 122 | −| [Tecsys](tecsys.md) | [`workable`](ats-workable.md) | 27 | 0 % | 100 % | ✅ | | |
| 123 | −| [CHUM](chum.md) | [`wpjobmanager`](ats-wpjobmanager.md) | 25 | 0 % | 0 % | ✅ | | |
| 124 | −| [exo (transport métropolitain)](exo.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 25 | 0 % | 0 % | ✅ | | |
| 125 | −| [AppDirect](appdirect.md) | [`greenhouse`](ats-greenhouse.md) | 24 | 25 % | 100 % | ✅ | | |
| 126 | −| [Nortera](nortera.md) | [`ultipro`](ats-ultipro.md) | 24 | 62 % | 0 % | ✅ | | |
| 127 | −| [Saputo](saputo.md) | [`workday`](ats-workday.md) | 24 | 75 % | 100 % | ✅ | | |
| 128 | −| [Broccolini](broccolini.md) | [`bamboohr`](ats-bamboohr.md) | 23 | 0 % | 100 % | ✅ | | |
| 129 | −| [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | [`taleo`](ats-taleo.md) | 23 | 0 % | 100 % | ✅ | | |
| 146 | +| [CDPQ — Caisse de dépôt et placement du Québec](cdpq.md) | [`workday`](ats-workday.md) | 25 | 0 % | 100 % | ✅ | | |
| 147 | +| [exo (transport métropolitain)](exo.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 25 | 0 % | 100 % | ✅ | | |
| 148 | +| [Saputo](saputo.md) | [`workday`](ats-workday.md) | 25 | 76 % | 100 % | ✅ | | |
| 149 | +| [Structube](structube1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 25 | 0 % | 100 % | ✅ | | |
| 150 | +| [Tecsys](tecsys.md) | [`workable`](ats-workable.md) | 25 | 0 % | 100 % | ✅ | | |
| 151 | +| [AppDirect](appdirect.md) | [`greenhouse`](ats-greenhouse.md) | 24 | 42 % | 100 % | ✅ | | |
| 152 | +| [Cineplex](cineplex.md) | [`workday`](ats-workday.md) | 24 | 4 % | 100 % | ✅ | | |
| 153 | +| [Cirque du Soleil](cirquedusoleil.md) | [`lever`](ats-lever.md) | 24 | 0 % | 88 % | ✅ | | |
| 154 | +| [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | [`taleo`](ats-taleo.md) | 24 | 0 % | 100 % | ✅ | | |
| 155 | +| [EXFO](exfo.md) | [`workday`](ats-workday.md) | 24 | 0 % | 100 % | ✅ | | |
| 156 | +| [FedEx Express Canada](fedex.md) | [`workday`](ats-workday.md) | 24 | 100 % | 88 % | ✅ | | |
| 157 | +| [OPENLANE Canada](openlane.md) | [`workday`](ats-workday.md) | 24 | 29 % | 83 % | ✅ | | |
| 158 | +| [OSEDEA](osedea.md) | [`lever`](ats-lever.md) | 24 | 0 % | 100 % | ✅ | | |
| 159 | +| [Progesys](progesys_inc.md) | [`breezy`](ats-breezy.md) | 24 | 4 % | 96 % | ✅ | | |
| 160 | +| [Huawei Canada](huaweicanada.md) | [`recruitee`](ats-recruitee.md) | 23 | 0 % | 100 % | ✅ | | |
| 130 | 161 | | [Intact Corporation financière](intactfc.md) | [`workday`](ats-workday.md) | 23 | 0 % | 100 % | ✅ | |
| 131 | 162 | | [MEDFAR Solutions Cliniques](medfar.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 23 | 0 % | 100 % | ✅ | |
| 163 | +| [Messer Canada](messer_canada.md) | [`ultipro`](ats-ultipro.md) | 23 | 87 % | 100 % | ✅ | | |
| 164 | +| [mthree](mthreerecruitingportal.md) | [`greenhouse`](ats-greenhouse.md) | 23 | 0 % | 100 % | ✅ | | |
| 165 | +| [Nortera](nortera.md) | [`ultipro`](ats-ultipro.md) | 23 | 61 % | 100 % | ✅ | | |
| 132 | 166 | | [Rio Tinto](riotinto.md) | [`workday`](ats-workday.md) | 23 | 0 % | 100 % | ✅ | |
| 133 | −| [Cirque du Soleil](cirquedusoleil.md) | [`lever`](ats-lever.md) | 22 | 0 % | 86 % | ✅ | | |
| 167 | +| [Broccolini](broccolini.md) | [`bamboohr`](ats-bamboohr.md) | 22 | 0 % | 100 % | ✅ | | |
| 168 | +| [JLL](jll.md) | [`workday`](ats-workday.md) | 22 | 5 % | 91 % | ✅ | | |
| 134 | 169 | | [McCarthy Tétrault](mccarthy_tetrault.md) | [`icims`](ats-icims.md) | 22 | 0 % | 100 % | ✅ | |
| 135 | −| [Messer Canada](messer_canada.md) | [`ultipro`](ats-ultipro.md) | 22 | 91 % | 100 % | ✅ | | |
| 136 | −| [mthree](mthreerecruitingportal.md) | [`greenhouse`](ats-greenhouse.md) | 22 | 0 % | 100 % | ✅ | | |
| 170 | +| [dcbel](dcbel.md) | [`bamboohr`](ats-bamboohr.md) | 21 | 0 % | 100 % | ✅ | | |
| 137 | 171 | | [Xsolla](xsolla.md) | [`lever`](ats-lever.md) | 21 | 95 % | 95 % | ✅ | |
| 138 | −| [Agnico Eagle Mines](agnico_eagle.md) | [`taleo`](ats-taleo.md) | 20 | 0 % | 100 % | ✅ | | |
| 139 | −| [dcbel](dcbel.md) | [`bamboohr`](ats-bamboohr.md) | 20 | 0 % | 100 % | ✅ | | |
| 140 | 172 | | [Rodeo FX](rodeofx.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 20 | 0 % | 100 % | ✅ | |
| 141 | 173 | | [CAA-Québec](caaquebec.md) | [`workday`](ats-workday.md) | 19 | 21 % | 100 % | ✅ | |
| 142 | −| [Vosker](vosker.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 19 | 0 % | 100 % | ✅ | | |
| 143 | −| [Explorance](explorance.md) | [`bamboohr`](ats-bamboohr.md) | 18 | 0 % | 100 % | ✅ | | |
| 144 | −| [Huawei Canada](huaweicanada.md) | [`recruitee`](ats-recruitee.md) | 18 | 0 % | 100 % | ✅ | | |
| 145 | −| [OSEDEA](osedea.md) | [`lever`](ats-lever.md) | 18 | 0 % | 100 % | ✅ | | |
| 174 | +| [Explorance](explorance.md) | [`bamboohr`](ats-bamboohr.md) | 19 | 0 % | 100 % | ✅ | | |
| 175 | +| [Vooban](vooban.md) | [`greenhouse`](ats-greenhouse.md) | 19 | 0 % | 100 % | ✅ | | |
| 176 | +| [Produits Labelink](labelink.md) | [`bamboohr`](ats-bamboohr.md) | 18 | 0 % | 100 % | ✅ | | |
| 146 | 177 | | [Réseau de transport de la Capitale](rtc_quebec.md) | [`njoyn`](ats-njoyn.md) | 18 | 0 % | 0 % | ✅ | |
| 147 | −| [Vooban](vooban.md) | [`greenhouse`](ats-greenhouse.md) | 18 | 0 % | 100 % | ✅ | | |
| 148 | −| [iA Groupe financier](ia_groupe.md) | [`workday`](ats-workday.md) | 17 | 100 % | 100 % | ✅ | | |
| 178 | +| [Ville de Gatineau](ville_gatineau.md) | [`njoyn`](ats-njoyn.md) | 18 | 94 % | 0 % | ✅ | | |
| 179 | +| [Vosker](vosker.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 18 | 0 % | 100 % | ✅ | | |
| 180 | +| [La Senza](lasenza.md) | [`greenhouse`](ats-greenhouse.md) | 17 | 12 % | 100 % | ✅ | | |
| 149 | 181 | | [NOVIPRO](novipro.md) | [`breezy`](ats-breezy.md) | 17 | 0 % | 100 % | ✅ | |
| 150 | −| [Produits Labelink](labelink.md) | [`bamboohr`](ats-bamboohr.md) | 17 | 0 % | 100 % | ✅ | | |
| 151 | −| [Ville de Gatineau](ville_gatineau.md) | [`njoyn`](ats-njoyn.md) | 17 | 94 % | 0 % | ✅ | | |
| 182 | +| [Société de transport de Laval](stl_laval.md) | [`njoyn`](ats-njoyn.md) | 17 | 29 % | 0 % | ✅ | | |
| 152 | 183 | | [VO2 Group](vo2_group.md) | [`lever`](ats-lever.md) | 17 | 6 % | 100 % | ✅ | |
| 153 | −| [BDC](bdc.md) | [`workday`](ats-workday.md) | 16 | 0 % | 100 % | ✅ | | |
| 154 | −| [Société de transport de Laval](stl_laval.md) | [`njoyn`](ats-njoyn.md) | 16 | 31 % | 0 % | ✅ | | |
| 155 | −| [Ville de Terrebonne](ville_terrebonne.md) | [`njoyn`](ats-njoyn.md) | 16 | 94 % | 0 % | ✅ | | |
| 156 | −| [Alcoa Canada](alcoa.md) | [`workday`](ats-workday.md) | 15 | 13 % | 40 % | ✅ | | |
| 157 | −| [Bell Textron Canada](bell_textron.md) | [`taleo`](ats-taleo.md) | 15 | 0 % | 100 % | ✅ | | |
| 158 | −| [Réseau Mieux-Être](reseau_mieux_etre.md) | [`breezy`](ats-breezy.md) | 15 | 0 % | 100 % | ✅ | | |
| 159 | −| [Valtech](valtech.md) | [`greenhouse`](ats-greenhouse.md) | 15 | 13 % | 100 % | ✅ | | |
| 160 | −| [Evolving Web](evolving_web.md) | [`workable`](ats-workable.md) | 14 | 0 % | 100 % | ✅ | | |
| 161 | −| [Gameloft](gameloft.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 14 | 0 % | 100 % | ✅ | | |
| 162 | −| [LG2](lg2.md) | [`recruitee`](ats-recruitee.md) | 14 | 7 % | 100 % | ✅ | | |
| 163 | −| [Bayshore HealthCare](bayshore.md) | [`taleo`](ats-taleo.md) | 13 | 0 % | 100 % | ✅ | | |
| 184 | +| [Alcoa Canada](alcoa.md) | [`workday`](ats-workday.md) | 16 | 12 % | 44 % | ✅ | | |
| 185 | +| [Bell Textron Canada](bell_textron.md) | [`taleo`](ats-taleo.md) | 16 | 0 % | 100 % | ✅ | | |
| 186 | +| [Sony Pictures Imageworks](sonypicturesimageworks.md) | [`greenhouse`](ats-greenhouse.md) | 16 | 31 % | 100 % | ✅ | | |
| 187 | +| [BDC](bdc.md) | [`workday`](ats-workday.md) | 15 | 0 % | 100 % | ✅ | | |
| 188 | +| [Groupe AGF](groupeagf.md) | [`dayforce`](ats-dayforce.md) | 15 | 53 % | 100 % | ✅ | | |
| 189 | +| [LG2](lg2.md) | [`recruitee`](ats-recruitee.md) | 15 | 7 % | 100 % | ✅ | | |
| 190 | +| [Teknion Roy & Breton](teknionroybreton.md) | [`recruitee`](ats-recruitee.md) | 15 | 53 % | 93 % | ✅ | | |
| 191 | +| [Victoria Park Medispa](vicpark.md) | [`bamboohr`](ats-bamboohr.md) | 15 | 0 % | 100 % | ✅ | | |
| 192 | +| [Ville de Terrebonne](ville_terrebonne.md) | [`njoyn`](ats-njoyn.md) | 15 | 93 % | 0 % | ✅ | | |
| 193 | +| [VinFast Canada](vinfastcanada.md) | [`dayforce`](ats-dayforce.md) | 15 | 33 % | 100 % | ✅ | | |
| 194 | +| [Bayshore HealthCare](bayshore.md) | [`taleo`](ats-taleo.md) | 14 | 0 % | 100 % | ✅ | | |
| 195 | +| [Fastco Canada](fastcocanada.md) | [`dayforce`](ats-dayforce.md) | 14 | 0 % | 100 % | ✅ | | |
| 196 | +| [Fruit d'Or](fruitdor.md) | [`ultipro`](ats-ultipro.md) | 14 | 0 % | 100 % | ✅ | | |
| 197 | +| [Lamour](lamour.md) | [`workable`](ats-workable.md) | 14 | 0 % | 100 % | ✅ | | |
| 198 | +| [Réseau Mieux-Être](reseau_mieux_etre.md) | [`breezy`](ats-breezy.md) | 14 | 0 % | 100 % | ✅ | | |
| 199 | +| [Starlink Aviation](starlink_aviation.md) | [`workable`](ats-workable.md) | 14 | 0 % | 100 % | ✅ | | |
| 200 | +| [United Services Group](unitedservices.md) | [`dayforce`](ats-dayforce.md) | 14 | 0 % | 100 % | ✅ | | |
| 201 | +| [Allstate Canada](allstate.md) | [`workday`](ats-workday.md) | 13 | 23 % | 85 % | ✅ | | |
| 202 | +| [Cloud Chamber Montréal](cloudchamberfr.md) | [`greenhouse`](ats-greenhouse.md) | 13 | 0 % | 100 % | ✅ | | |
| 203 | +| [Gameloft](gameloft.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 13 | 0 % | 100 % | ✅ | | |
| 204 | +| [iA Groupe financier](ia_groupe.md) | [`workday`](ats-workday.md) | 13 | 100 % | 100 % | ✅ | | |
| 205 | +| [Investissement Québec](investquebec.md) | [`workday`](ats-workday.md) | 13 | 8 % | 100 % | ✅ | | |
| 164 | 206 | | [MicroHabitat](microhabitat.md) | [`breezy`](ats-breezy.md) | 13 | 100 % | 100 % | ✅ | |
| 165 | 207 | | [OPAL-RT Technologies](opalrt.md) | [`bamboohr`](ats-bamboohr.md) | 13 | 0 % | 100 % | ✅ | |
| 166 | 208 | | [Sid Lee](sidlee.md) | [`greenhouse`](ats-greenhouse.md) | 13 | 0 % | 100 % | ✅ | |
| 167 | 209 | | [Talan](talan.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 13 | 0 % | 100 % | ✅ | |
| 168 | −| [Victoria Park Medispa](vicpark.md) | [`bamboohr`](ats-bamboohr.md) | 13 | 0 % | 100 % | ✅ | | |
| 169 | −| [Fruit d'Or](fruitdor.md) | [`ultipro`](ats-ultipro.md) | 12 | 0 % | 0 % | ✅ | | |
| 210 | +| [Evolving Web](evolving_web.md) | [`workable`](ats-workable.md) | 12 | 0 % | 100 % | ✅ | | |
| 170 | 211 | | [GSK](gsk.md) | [`workday`](ats-workday.md) | 12 | 0 % | 83 % | ✅ | |
| 171 | −| [Investissement Québec](investquebec.md) | [`workday`](ats-workday.md) | 12 | 8 % | 100 % | ✅ | | |
| 172 | −| [Logisco](logisco.md) | [`bamboohr`](ats-bamboohr.md) | 12 | 42 % | 100 % | ✅ | | |
| 212 | +| [JG Rive-Sud (GFS)](jgrivesud.md) | [`workday`](ats-workday.md) | 12 | 75 % | 100 % | ✅ | | |
| 213 | +| [Lemay](lemay.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 12 | 8 % | 100 % | ✅ | | |
| 214 | +| [LoiZéro](loizero.md) | [`greenhouse`](ats-greenhouse.md) | 12 | 0 % | 100 % | ✅ | | |
| 215 | +| [Running Room Canada](runningroom.md) | [`dayforce`](ats-dayforce.md) | 12 | 0 % | 100 % | ✅ | | |
| 173 | 216 | | [Spiria](spiria.md) | [`lever`](ats-lever.md) | 12 | 58 % | 100 % | ✅ | |
| 217 | +| [Valtech](valtech.md) | [`greenhouse`](ats-greenhouse.md) | 12 | 17 % | 100 % | ✅ | | |
| 174 | 218 | | [3 Brasseurs Canada](trois_brasseurs.md) | [`breezy`](ats-breezy.md) | 11 | 73 % | 100 % | ✅ | |
| 219 | +| [Aritzia](aritzia.md) | [`workday`](ats-workday.md) | 11 | 64 % | 100 % | ✅ | | |
| 220 | +| [FLO (AddÉnergie)](flo_addenergie.md) | [`workable`](ats-workable.md) | 11 | 0 % | 100 % | ✅ | | |
| 175 | 221 | | [KPI Digital](kpidigital.md) | [`bamboohr`](ats-bamboohr.md) | 11 | 0 % | 100 % | ✅ | |
| 176 | −| [Lamour](lamour.md) | [`workable`](ats-workable.md) | 11 | 0 % | 100 % | ✅ | | |
| 177 | −| [Mirego](mirego.md) | [`lever`](ats-lever.md) | 11 | 0 % | 100 % | ✅ | | |
| 222 | +| [LIDD Consultants](lidd.md) | [`workable`](ats-workable.md) | 11 | 0 % | 100 % | ✅ | | |
| 223 | +| [Logisco](logisco.md) | [`bamboohr`](ats-bamboohr.md) | 11 | 36 % | 100 % | ✅ | | |
| 224 | +| [People Can Fly](peoplecanfly.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 11 | 0 % | 100 % | ✅ | | |
| 225 | +| [Sika Canada](sikaag.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 11 | 0 % | 100 % | ✅ | | |
| 178 | 226 | | [TSMG](tsmg.md) | [`lever`](ats-lever.md) | 11 | 0 % | 100 % | ✅ | |
| 227 | +| [Abbott](abbott.md) | [`workday`](ats-workday.md) | 10 | 20 % | 90 % | ✅ | | |
| 228 | +| [Avantage Plus](avantageplus.md) | [`recruitee`](ats-recruitee.md) | 10 | 10 % | 100 % | ✅ | | |
| 229 | +| [BDL Énergie](bdl_energie.md) | [`breezy`](ats-breezy.md) | 10 | 0 % | 30 % | ✅ | | |
| 179 | 230 | | [CAPREIT](capreit.md) | [`icims`](ats-icims.md) | 10 | 0 % | 100 % | ✅ | |
| 231 | +| [Eminent Valet](eminent_valet.md) | [`workable`](ats-workable.md) | 10 | 100 % | 100 % | ✅ | | |
| 180 | 232 | | [EQ3](eq3_ltd.md) | [`breezy`](ats-breezy.md) | 10 | 60 % | 100 % | ✅ | |
| 181 | −| [Fonds de solidarité FTQ](fondsftq.md) | [`workday`](ats-workday.md) | 10 | 0 % | 100 % | ✅ | | |
| 182 | −| [People Can Fly](peoplecanfly.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 10 | 0 % | 100 % | ✅ | | |
| 233 | +| [Framestore](framestore.md) | [`recruitee`](ats-recruitee.md) | 10 | 0 % | 100 % | ✅ | | |
| 234 | +| [Groupe Mach](groupemach.md) | [`dayforce`](ats-dayforce.md) | 10 | 0 % | 100 % | ✅ | | |
| 235 | +| [Mirego](mirego.md) | [`lever`](ats-lever.md) | 10 | 0 % | 100 % | ✅ | | |
| 236 | +| [Nationex](nationex.md) | [`dayforce`](ats-dayforce.md) | 10 | 0 % | 100 % | ✅ | | |
| 237 | +| [Royal Vet](royalvet.md) | [`greenhouse`](ats-greenhouse.md) | 10 | 0 % | 100 % | ✅ | | |
| 238 | +| [Sun Life](sunlife.md) | [`workday`](ats-workday.md) | 10 | 10 % | 100 % | ✅ | | |
| 239 | +| [Telesat](telesat.md) | [`lever`](ats-lever.md) | 10 | 0 % | 100 % | ✅ | | |
| 240 | +| [VF Corporation (The North Face, Vans)](vfc.md) | [`workday`](ats-workday.md) | 10 | 80 % | 100 % | ✅ | | |
| 183 | 241 | | [ADI - Albert Davidson Industries](adi_albert_davidson_industries.md) | [`breezy`](ats-breezy.md) | 9 | 100 % | 100 % | ✅ | |
| 184 | 242 | | [AlayaCare](alayacare.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 0 % | 100 % | ✅ | |
| 185 | −| [Bento Sushi](bento_sushi.md) | [`adp`](ats-adp.md) | 9 | 89 % | 0 % | ✅ | | |
| 243 | +| [Alo Yoga](aloyoga.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 0 % | 78 % | ✅ | | |
| 244 | +| [Bento Sushi](bento_sushi.md) | [`adp`](ats-adp.md) | 9 | 89 % | 100 % | ✅ | | |
| 245 | +| [Botpress](botpress.md) | [`workable`](ats-workable.md) | 9 | 0 % | 100 % | ✅ | | |
| 186 | 246 | | [Canadian Tire](canadiantirecorporation.md) | [`workday`](ats-workday.md) | 9 | 56 % | 100 % | ✅ | |
| 187 | 247 | | [EDF Renouvelables Canada](edf_renouvelables.md) | [`icims`](ats-icims.md) | 9 | 78 % | 67 % | ✅ | |
| 188 | −| [Eminent Valet](eminent_valet.md) | [`workable`](ats-workable.md) | 9 | 100 % | 100 % | ✅ | | |
| 189 | −| [Framestore](framestore.md) | [`recruitee`](ats-recruitee.md) | 9 | 0 % | 100 % | ✅ | | |
| 190 | −| [HEC Montréal](hec_montreal.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 9 | 0 % | 0 % | ✅ | | |
| 191 | −| [HEC Montréal — corps professoral](hec_montreal_profs.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 9 | 0 % | 0 % | ✅ | | |
| 248 | +| [HEC Montréal](hec_montreal.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 9 | 0 % | 100 % | ✅ | | |
| 249 | +| [HEC Montréal — corps professoral](hec_montreal_profs.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 9 | 0 % | 100 % | ✅ | | |
| 192 | 250 | | [J'Excelle](jexcelleinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 9 | 0 % | 100 % | ✅ | |
| 193 | −| [JG Rive-Sud (GFS)](jgrivesud.md) | [`workday`](ats-workday.md) | 9 | 67 % | 100 % | ✅ | | |
| 251 | +| [Lindt & Sprüngli Canada](lindt_sprunglicanada.md) | [`breezy`](ats-breezy.md) | 9 | 0 % | 100 % | ✅ | | |
| 194 | 252 | | [Nora Pharma](nora_pharma.md) | [`breezy`](ats-breezy.md) | 9 | 100 % | 89 % | ✅ | |
| 253 | +| [Rentokil Initial](rentokil_initial.md) | [`workable`](ats-workable.md) | 9 | 89 % | 100 % | ✅ | | |
| 195 | 254 | | [SIA Innovations](siainnovationsinc.md) | [`greenhouse`](ats-greenhouse.md) | 9 | 44 % | 100 % | ✅ | |
| 196 | 255 | | [Tetrix](tetrix.md) | [`ashby`](ats-ashby.md) | 9 | 100 % | 11 % | ✅ | |
| 256 | +| [AJ Walter Aviation](ajwalter.md) | [`recruitee`](ats-recruitee.md) | 8 | 0 % | 100 % | ✅ | | |
| 197 | 257 | | [Big Bang](bigbang.md) | [`bamboohr`](ats-bamboohr.md) | 8 | 25 % | 100 % | ✅ | |
| 198 | −| [Botpress](botpress.md) | [`workable`](ats-workable.md) | 8 | 0 % | 100 % | ✅ | | |
| 199 | 258 | | [CF Montréal](cfmontreal.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 8 | 0 % | 100 % | ✅ | |
| 200 | 259 | | [Devimco Appartements](devimco.md) | [`bamboohr`](ats-bamboohr.md) | 8 | 12 % | 100 % | ✅ | |
| 260 | +| [Fonds de solidarité FTQ](fondsftq.md) | [`workday`](ats-workday.md) | 8 | 0 % | 100 % | ✅ | | |
| 201 | 261 | | [GURUS Solutions](gurussolutions.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ | |
| 202 | −| [LIDD Consultants](lidd.md) | [`workable`](ats-workable.md) | 8 | 0 % | 100 % | ✅ | | |
| 262 | +| [Lyft](lyft.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 100 % | 100 % | ✅ | | |
| 203 | 263 | | [Mila — Institut québécois d'IA](mila_2.md) | [`workable`](ats-workable.md) | 8 | 0 % | 100 % | ✅ | |
| 204 | −| [Nuovo Photography](nuovophotography.md) | [`workable`](ats-workable.md) | 8 | 25 % | 100 % | ✅ | | |
| 205 | 264 | | [Omni Hôtel Mont-Royal](omni_hotels_gestion.md) | [`icims`](ats-icims.md) | 8 | 88 % | 100 % | ✅ | |
| 206 | 265 | | [Omni Hôtel Mont-Royal](omni_hotels_horaire.md) | [`icims`](ats-icims.md) | 8 | 88 % | 100 % | ✅ | |
| 207 | −| [Sun Life](sunlife.md) | [`workday`](ats-workday.md) | 8 | 0 % | 100 % | ✅ | | |
| 208 | −| [AJ Walter Aviation](ajwalter.md) | [`recruitee`](ats-recruitee.md) | 7 | 0 % | 100 % | ✅ | | |
| 266 | +| [Portage CyberTech](portagecybertech.md) | [`bamboohr`](ats-bamboohr.md) | 8 | 38 % | 100 % | ✅ | | |
| 267 | +| [Toboggan Labs](tobogganlabs.md) | [`greenhouse`](ats-greenhouse.md) | 8 | 0 % | 100 % | ✅ | | |
| 268 | +| [Distro](distro.md) | [`lever`](ats-lever.md) | 7 | 100 % | 100 % | ✅ | | |
| 209 | 269 | | [Luqia (INO)](ino_ca.md) | [`breezy`](ats-breezy.md) | 7 | 0 % | 100 % | ✅ | |
| 210 | −| [Petal](petalmd.md) | [`recruitee`](ats-recruitee.md) | 7 | 14 % | 100 % | ✅ | | |
| 270 | +| [Mejuri](mejuri.md) | [`greenhouse`](ats-greenhouse.md) | 7 | 71 % | 100 % | ✅ | | |
| 271 | +| [Nexapp](nexapp.md) | [`bamboohr`](ats-bamboohr.md) | 7 | 0 % | 100 % | ✅ | | |
| 272 | +| [Nuovo Photography](nuovophotography.md) | [`workable`](ats-workable.md) | 7 | 29 % | 100 % | ✅ | | |
| 273 | +| [Pfizer Canada](pfizer.md) | [`workday`](ats-workday.md) | 7 | 100 % | 29 % | ✅ | | |
| 211 | 274 | | [Robotiq](robotiq.md) | [`bamboohr`](ats-bamboohr.md) | 7 | 0 % | 100 % | ✅ | |
| 275 | +| [Toon Boom Animation](toonboom.md) | [`bamboohr`](ats-bamboohr.md) | 7 | 0 % | 100 % | ✅ | | |
| 276 | +| [US Mobile](usmobile.md) | [`lever`](ats-lever.md) | 7 | 100 % | 100 % | ✅ | | |
| 277 | +| [Administration portuaire de Québec](portquebec.md) | [`dayforce`](ats-dayforce.md) | 6 | 0 % | 100 % | ✅ | | |
| 212 | 278 | | [Church & Dwight Canada](churchdwight.md) | [`workday`](ats-workday.md) | 6 | 0 % | 100 % | ✅ | |
| 213 | −| [Cultures Gen V](cultures_genv.md) | [`adp`](ats-adp.md) | 6 | 33 % | 0 % | ✅ | | |
| 279 | +| [CTS Foods Brokers](cts_foods_brokers_inc.md) | [`workable`](ats-workable.md) | 6 | 33 % | 100 % | ✅ | | |
| 280 | +| [Cultures Gen V](cultures_genv.md) | [`adp`](ats-adp.md) | 6 | 33 % | 100 % | ✅ | | |
| 281 | +| [Daniels Health Canada](daniels_sharpsmart.md) | [`lever`](ats-lever.md) | 6 | 17 % | 33 % | ✅ | | |
| 214 | 282 | | [EQ Bank](eqbank.md) | [`lever`](ats-lever.md) | 6 | 50 % | 50 % | ✅ | |
| 215 | −| [Hopper](hopper.md) | [`ashby`](ats-ashby.md) | 6 | 0 % | 67 % | ✅ | | |
| 216 | −| [Mattel (Mega Bloks)](mattelinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 6 | 0 % | 100 % | ✅ | | |
| 283 | +| [Exportation et développement Canada (EDC)](export_development_canada.md) | [`workable`](ats-workable.md) | 6 | 83 % | 100 % | ✅ | | |
| 284 | +| [Keel Infrastructure](keelinfrastructure.md) | [`greenhouse`](ats-greenhouse.md) | 6 | 0 % | 100 % | ✅ | | |
| 285 | +| [LRDG (Language Research Development Group)](lrdgonline.md) | [`lever`](ats-lever.md) | 6 | 100 % | 100 % | ✅ | | |
| 286 | +| [Maquette Virtuelle](maquettevirtuelle.md) | [`lever`](ats-lever.md) | 6 | 0 % | 100 % | ✅ | | |
| 217 | 287 | | [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | [`adp`](ats-adp.md) | 6 | 50 % | 100 % | ✅ | |
| 218 | −| [MSI Gestion immobilière](msi_gestion.md) | [`adp`](ats-adp.md) | 6 | 100 % | 100 % | ✅ | | |
| 219 | 288 | | [MXO](mxo.md) | [`bamboohr`](ats-bamboohr.md) | 6 | 83 % | 100 % | ✅ | |
| 220 | −| [Nexapp](nexapp.md) | [`bamboohr`](ats-bamboohr.md) | 6 | 0 % | 100 % | ✅ | | |
| 221 | 289 | | [North West Rubber](northwestrubber.md) | [`bamboohr`](ats-bamboohr.md) | 6 | 0 % | 100 % | ✅ | |
| 222 | −| [Portage CyberTech](portagecybertech.md) | [`bamboohr`](ats-bamboohr.md) | 6 | 17 % | 100 % | ✅ | | |
| 290 | +| [Petal](petalmd.md) | [`recruitee`](ats-recruitee.md) | 6 | 0 % | 100 % | ✅ | | |
| 291 | +| [STAS](stasinc.md) | [`recruitee`](ats-recruitee.md) | 6 | 0 % | 100 % | ✅ | | |
| 223 | 292 | | [Sweat Pants Agency](sweat_pants_agency.md) | [`workable`](ats-workable.md) | 6 | 50 % | 100 % | ✅ | |
| 224 | −| [Toon Boom Animation](toonboom.md) | [`bamboohr`](ats-bamboohr.md) | 6 | 0 % | 100 % | ✅ | | |
| 225 | −| [Triotech](triotech.md) | [`bamboohr`](ats-bamboohr.md) | 6 | 17 % | 100 % | ✅ | | |
| 226 | −| [US Mobile](usmobile.md) | [`lever`](ats-lever.md) | 6 | 100 % | 100 % | ✅ | | |
| 227 | 293 | | [Adèle Express](adeleexpressfr.md) | [`recruitee`](ats-recruitee.md) | 5 | 60 % | 100 % | ✅ | |
| 294 | +| [Air Canada Rouge](acadierouge.md) | [`dayforce`](ats-dayforce.md) | 5 | 20 % | 100 % | ✅ | | |
| 228 | 295 | | [Alphanumeric Systems](alphanumeric_systems.md) | [`breezy`](ats-breezy.md) | 5 | 100 % | 100 % | ✅ | |
| 229 | 296 | | [Astucemedia](astucemedia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 5 | 0 % | 100 % | ✅ | |
| 230 | 297 | | [Aviya Aerospace Systems](aviyatech.md) | [`lever`](ats-lever.md) | 5 | 0 % | 100 % | ✅ | |
| 231 | −| [Distro](distro.md) | [`lever`](ats-lever.md) | 5 | 100 % | 100 % | ✅ | | |
| 298 | +| [Hopper](hopper.md) | [`ashby`](ats-ashby.md) | 5 | 0 % | 60 % | ✅ | | |
| 232 | 299 | | [Lush Cosmétiques](lush.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 100 % | 100 % | ✅ | |
| 233 | 300 | | [Mistral AI](mistral_ai.md) | [`ashby`](ats-ashby.md) | 5 | 0 % | 100 % | ✅ | |
| 301 | +| [MSI Gestion immobilière](msi_gestion.md) | [`adp`](ats-adp.md) | 5 | 100 % | 100 % | ✅ | | |
| 234 | 302 | | [Médialo](medialo.md) | [`recruitee`](ats-recruitee.md) | 5 | 0 % | 80 % | ✅ | |
| 235 | −| [Poka](poka.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 0 % | 100 % | ✅ | | |
| 303 | +| [Nomic Bio](nomic.md) | [`ashby`](ats-ashby.md) | 5 | 0 % | 80 % | ✅ | | |
| 304 | +| [Plusgrade](plusgrade.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ✅ | | |
| 236 | 305 | | [Propriétés Scalia](scalia.md) | [`bamboohr`](ats-bamboohr.md) | 5 | 20 % | 100 % | ✅ | |
| 237 | 306 | | [Raymond Chabot Grant Thornton](rcgt.md) | [`workday`](ats-workday.md) | 5 | 0 % | 100 % | ✅ | |
| 307 | +| [Realstar](realstar.md) | [`dayforce`](ats-dayforce.md) | 5 | 0 % | 100 % | ✅ | | |
| 238 | 308 | | [Surmesur](surmesur.md) | [`bamboohr`](ats-bamboohr.md) | 5 | 80 % | 100 % | ✅ | |
| 239 | −| [TandemLaunch](tandemlaunch.md) | [`greenhouse`](ats-greenhouse.md) | 5 | 0 % | 100 % | ✅ | | |
| 309 | +| [Triotech](triotech.md) | [`bamboohr`](ats-bamboohr.md) | 5 | 0 % | 100 % | ✅ | | |
| 240 | 310 | | [VOXDATA](voxdata.md) | [`breezy`](ats-breezy.md) | 5 | 100 % | 100 % | ✅ | |
| 311 | +| [Agile DSS](agiledss.md) | [`recruitee`](ats-recruitee.md) | 4 | 0 % | 100 % | ✅ | | |
| 312 | +| [Alimentiv](alimentiv_2.md) | [`lever`](ats-lever.md) | 4 | 100 % | 25 % | ✅ | | |
| 313 | +| [Bardel Entertainment](bardel_entertainment.md) | [`workable`](ats-workable.md) | 4 | 100 % | 100 % | ✅ | | |
| 241 | 314 | | [Broadsign](broadsign.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ | |
| 315 | +| [Dare Foods](darefoods.md) | [`dayforce`](ats-dayforce.md) | 4 | 75 % | 100 % | ✅ | | |
| 316 | +| [Delmar International](delmar_international_inc.md) | [`workable`](ats-workable.md) | 4 | 0 % | 100 % | ✅ | | |
| 317 | +| [Ecosystem Énergie](ecosystem.md) | [`lever`](ats-lever.md) | 4 | 0 % | 100 % | ✅ | | |
| 242 | 318 | | [EOS Aircraft](eosaircraftinc.md) | [`bamboohr`](ats-bamboohr.md) | 4 | 0 % | 100 % | ✅ | |
| 243 | 319 | | [HoYoverse](hoyoverse.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ | |
| 244 | 320 | | [Korem](korem.md) | [`bamboohr`](ats-bamboohr.md) | 4 | 0 % | 100 % | ✅ | |
| 321 | +| [Mattel (Mega Bloks)](mattelinc.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ | | |
| 245 | 322 | | [Mitacs](mitacs.md) | [`bamboohr`](ats-bamboohr.md) | 4 | 100 % | 100 % | ✅ | |
| 246 | −| [Nomic Bio](nomic.md) | [`ashby`](ats-ashby.md) | 4 | 0 % | 75 % | ✅ | | |
| 247 | −| [Pfizer Canada](pfizer.md) | [`workday`](ats-workday.md) | 4 | 100 % | 0 % | ✅ | | |
| 248 | −| [Plusgrade](plusgrade.md) | [`workday`](ats-workday.md) | 4 | 0 % | 100 % | ✅ | | |
| 323 | +| [Neo Financial](neofinancial.md) | [`ashby`](ats-ashby.md) | 4 | 100 % | 100 % | ✅ | | |
| 324 | +| [Pivot + Edge](pivotandedge.md) | [`recruitee`](ats-recruitee.md) | 4 | 0 % | 100 % | ✅ | | |
| 325 | +| [Placements Mackenzie (Power/IGM)](mackenzie.md) | [`icims`](ats-icims.md) | 4 | 100 % | 75 % | ✅ | | |
| 326 | +| [ServiceNow](servicenow.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 4 | 0 % | 100 % | ✅ | | |
| 327 | +| [TandemLaunch](tandemlaunch.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 0 % | 100 % | ✅ | | |
| 249 | 328 | | [Vaco](vaco.md) | [`greenhouse`](ats-greenhouse.md) | 4 | 75 % | 100 % | ✅ | |
| 250 | −| [Bardel Entertainment](bardel_entertainment.md) | [`workable`](ats-workable.md) | 3 | 100 % | 100 % | ✅ | | |
| 251 | 329 | | [Brasseries Sleeman (Unibroue)](sleeman.md) | [`workday`](ats-workday.md) | 3 | 33 % | 100 % | ✅ | |
| 330 | +| [Cologix](cologix.md) | [`lever`](ats-lever.md) | 3 | 33 % | 100 % | ✅ | | |
| 331 | +| [CSN Collision](csncollision.md) | [`workable`](ats-workable.md) | 3 | 0 % | 100 % | ✅ | | |
| 332 | +| [Damotech](damotech.md) | [`workable`](ats-workable.md) | 3 | 33 % | 100 % | ✅ | | |
| 252 | 333 | | [DiliTrust](dilitrust.md) | [`lever`](ats-lever.md) | 3 | 0 % | 100 % | ✅ | |
| 253 | 334 | | [Dulcedo Management](dulcedo.md) | [`lever`](ats-lever.md) | 3 | 33 % | 67 % | ✅ | |
| 335 | +| [East Penn Canada](eastpenn.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ | | |
| 254 | 336 | | [EVLO (Hydro-Québec)](evlo.md) | [`bamboohr`](ats-bamboohr.md) | 3 | 0 % | 100 % | ✅ | |
| 255 | −| [Flinks](flinks.md) | [`workable`](ats-workable.md) | 3 | 100 % | 100 % | ✅ | | |
| 256 | 337 | | [Fuse Energy](fuse.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 100 % | ✅ | |
| 257 | 338 | | [Gearbox Studio Québec](gearboxquebec.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ | |
| 339 | +| [GURU Boisson Énergisante](guruorganicenergydrink.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 3 | 0 % | 100 % | ✅ | | |
| 258 | 340 | | [Mistplay](mistplay.md) | [`lever`](ats-lever.md) | 3 | 33 % | 100 % | ✅ | |
| 259 | 341 | | [No Saint](no_saint.md) | [`ashby`](ats-ashby.md) | 3 | 0 % | 100 % | ✅ | |
| 260 | −| [Placements Mackenzie (Power/IGM)](mackenzie.md) | [`icims`](ats-icims.md) | 3 | 100 % | 0 % | ✅ | | |
| 261 | −| [Rethink](rethinkcanada.md) | [`bamboohr`](ats-bamboohr.md) | 3 | 0 % | 100 % | ✅ | | |
| 342 | +| [Poka](poka.md) | [`greenhouse`](ats-greenhouse.md) | 3 | 0 % | 100 % | ✅ | | |
| 343 | +| [Reflector Entertainment](reflector.md) | [`dayforce`](ats-dayforce.md) | 3 | 0 % | 100 % | ✅ | | |
| 262 | 344 | | [Squeeze Studio Animation](squeezestudio.md) | [`recruitee`](ats-recruitee.md) | 3 | 0 % | 67 % | ✅ | |
| 263 | −| [Suncor Énergie](suncor.md) | [`workday`](ats-workday.md) | 3 | 0 % | 100 % | ✅ | | |
| 345 | +| [Turbulent](turbulent.md) | [`breezy`](ats-breezy.md) | 3 | 0 % | 100 % | ✅ | | |
| 264 | 346 | | [Unit8](unit8.md) | [`workable`](ats-workable.md) | 3 | 0 % | 100 % | ✅ | |
| 265 | −| [Alimentiv](alimentiv_2.md) | [`lever`](ats-lever.md) | 2 | 100 % | 50 % | ✅ | | |
| 266 | −| [Aliments Ouimet-Cordon Bleu inc.](cordonbleu.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 50 % | 100 % | ✅ | | |
| 347 | +| [AutoTrader Canada](autotradercanada.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 100 % | 100 % | ✅ | | |
| 267 | 348 | | [BIXI Montréal](biximontreal.md) | [`recruitee`](ats-recruitee.md) | 2 | 50 % | 100 % | ✅ | |
| 349 | +| [Black & McDonald](black_mcdonald_francais.md) | [`breezy`](ats-breezy.md) | 2 | 0 % | 100 % | ✅ | | |
| 350 | +| [Charger Logistics](charger_logistics_inc.md) | [`workable`](ats-workable.md) | 2 | 0 % | 100 % | ✅ | | |
| 351 | +| [Charlotte Tilbury](charlotte_tilbury.md) | [`workable`](ats-workable.md) | 2 | 0 % | 100 % | ✅ | | |
| 352 | +| [Eidos-Montréal](eidosmontreal.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ | | |
| 353 | +| [Exegy](exegy.md) | [`ashby`](ats-ashby.md) | 2 | 0 % | 100 % | ✅ | | |
| 268 | 354 | | [Fenêtres Concept](fenetresconcept.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 100 % | 100 % | ✅ | |
| 355 | +| [Financeit](financeit.md) | [`workable`](ats-workable.md) | 2 | 100 % | 100 % | ✅ | | |
| 356 | +| [Fiserv](fiserv.md) | [`workday`](ats-workday.md) | 2 | 50 % | 100 % | ✅ | | |
| 269 | 357 | | [Flare (cybersécurité)](flare.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 50 % | 100 % | ✅ | |
| 270 | 358 | | [Groupe BC2](bc2.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 0 % | 100 % | ✅ | |
| 359 | +| [KRAFTON Montréal Studio](studiokraftonboard.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ | | |
| 360 | +| [Lambda](lambda.md) | [`ashby`](ats-ashby.md) | 2 | 100 % | 100 % | ✅ | | |
| 361 | +| [Latys Intelligence](latys.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ | | |
| 271 | 362 | | [On Running](onrunning.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ | |
| 272 | 363 | | [OTT Financial](ott.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 0 % | 100 % | ✅ | |
| 273 | 364 | | [Playmind](playmind.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ | |
| 274 | 365 | | [Potloc](potloc.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ | |
| 275 | −| [ServiceNow](servicenow.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 0 % | 100 % | ✅ | | |
| 366 | +| [Rethink](rethinkcanada.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 0 % | 100 % | ✅ | | |
| 367 | +| [Sense Ingénierie](sense_engineering.md) | [`breezy`](ats-breezy.md) | 2 | 0 % | 100 % | ✅ | | |
| 368 | +| [Spectra Premium](spectrapremium.md) | [`dayforce`](ats-dayforce.md) | 2 | 0 % | 100 % | ✅ | | |
| 276 | 369 | | [Spreedly](spreedly.md) | [`lever`](ats-lever.md) | 2 | 0 % | 100 % | ✅ | |
| 370 | +| [StorageMart](storagemart.md) | [`dayforce`](ats-dayforce.md) | 2 | 100 % | 100 % | ✅ | | |
| 371 | +| [Suncor Énergie](suncor.md) | [`workday`](ats-workday.md) | 2 | 0 % | 100 % | ✅ | | |
| 372 | +| [Terrestar Solutions](terrestarsolutionsfr.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 0 % | 100 % | ✅ | | |
| 373 | +| [Trupanion](trupanion1.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 50 % | 100 % | ✅ | | |
| 277 | 374 | | [Vaporus](vaporus_inc.md) | [`breezy`](ats-breezy.md) | 2 | 100 % | 50 % | ✅ | |
| 278 | −| [Vasco](vasco.md) | [`ashby`](ats-ashby.md) | 2 | 0 % | 100 % | ✅ | | |
| 279 | 375 | | [Venture Media](venturemedia.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 2 | 100 % | 100 % | ✅ | |
| 280 | 376 | | [VML Canada](vmlcanadaen.md) | [`greenhouse`](ats-greenhouse.md) | 2 | 50 % | 100 % | ✅ | |
| 281 | 377 | | [Ziptrek Tremblant](ziptrekeco.md) | [`bamboohr`](ats-bamboohr.md) | 2 | 100 % | 100 % | ✅ | |
| 378 | +| [Alan Canada](alan.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ | | |
| 379 | +| [Aliments Ouimet-Cordon Bleu inc.](cordonbleu.md) | [`bamboohr`](ats-bamboohr.md) | 1 | 100 % | 100 % | ✅ | | |
| 282 | 380 | | [Amilia](amilia.md) | [`recruitee`](ats-recruitee.md) | 1 | 0 % | 0 % | ✅ | |
| 283 | 381 | | [Atecna](atecna_montreal.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ | |
| 382 | +| [Billups](billups.md) | [`ashby`](ats-ashby.md) | 1 | 100 % | 100 % | ✅ | | |
| 383 | +| [BLEUFEU (Festival d'été de Québec)](bleufeu.md) | [`dayforce`](ats-dayforce.md) | 1 | 0 % | 100 % | ✅ | | |
| 384 | +| [California Closets](californiaclosets.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | | |
| 284 | 385 | | [Canada Global Recruitment](canada_global.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 0 % | ✅ | |
| 285 | −| [Charger Logistics](charger_logistics_inc.md) | [`workable`](ats-workable.md) | 1 | 0 % | 100 % | ✅ | | |
| 386 | +| [Centre multiethnique de Québec](centremultiethniquedequbec.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 100 % | 100 % | ✅ | | |
| 387 | +| [Club Monaco](clubmonaco.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ | | |
| 286 | 388 | | [GoLogic](gologic.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | |
| 389 | +| [Guillevin International](guillevin.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ | | |
| 287 | 390 | | [Industrious](industrious.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ | |
| 288 | 391 | | [NATIONAL](national.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 0 % | 100 % | ✅ | |
| 289 | −| [Osgoode Properties](osgoode_properties.md) | [`adp`](ats-adp.md) | 1 | 100 % | 0 % | ✅ | | |
| 392 | +| [Osgoode Properties](osgoode_properties.md) | [`adp`](ats-adp.md) | 1 | 100 % | 100 % | ✅ | | |
| 393 | +| [Panda7](panda7.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 100 % | ✅ | | |
| 290 | 394 | | [Poulet Rouge](pouletrouge.md) | [`bamboohr`](ats-bamboohr.md) | 1 | 0 % | 100 % | ✅ | |
| 291 | 395 | | [Produits Kruger](produits_kruger.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 1 | 0 % | 0 % | ✅ | |
| 292 | 396 | | [Samsara](samsara.md) | [`greenhouse`](ats-greenhouse.md) | 1 | 100 % | 100 % | ✅ | |
| 397 | +| [Shell Canada](shell.md) | [`workday`](ats-workday.md) | 1 | 0 % | 100 % | ✅ | | |
| 293 | 398 | | [Sparkgrid](sparkgrid.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | |
| 294 | 399 | | [Stelpro](stelpro.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | |
| 295 | 400 | | [Talsom](talsom.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | |
| 401 | +| [TELUS Santé — Cliniques](telus_health_7fe6b0fe8614.md) | [`breezy`](ats-breezy.md) | 1 | 100 % | 0 % | ✅ | | |
| 402 | +| [Vasco](vasco.md) | [`ashby`](ats-ashby.md) | 1 | 0 % | 100 % | ✅ | | |
| 296 | 403 | | [Xplornet](xplornet.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | |
| 297 | 404 | | [YouSet](youset.md) | [`breezy`](ats-breezy.md) | 1 | 0 % | 100 % | ✅ | |
| 405 | +| [ZOLL Medical](zoll.md) | [`workday`](ats-workday.md) | 1 | 100 % | 100 % | ✅ | | |
| 406 | +| [École des entrepreneurs du Québec](coledesentrepreneursduqubec.md) | [`smartrecruiters`](ats-smartrecruiters.md) | 1 | 0 % | 100 % | ✅ | | |
| 407 | +| [Flinks](flinks.md) | [`workable`](ats-workable.md) | 0 | — | — | ✅ | | |
| 298 | 408 | | [Kruger](kruger.md) | [`taleo_tbe`](ats-taleo_tbe.md) | 0 | — | — | ✅ | |
| 409 | +| [Projevia](projevia.md) | [`recruitee`](ats-recruitee.md) | 0 | — | — | ✅ | | |
| 299 | 410 | |
| 300 | 411 | ## Régénérer cette documentation |
| 301 | 412 | |
added
docs/connecteurs/abbott.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/abbott.md | |
| 7 | +Rôle : Fiche connecteur — Abbott (employeur direct, ATS workday) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Abbott (`abbott`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workday`](ats-workday.md) · Statut registre : actif · Connecteur : `jobka/connectors/abbott.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Abbott]() | |
| 20 | +- **Page carrières** : https://abbott.wd5.myworkdayjobs.com/abbottcareers | |
| 21 | +- **Secteurs** : Santé | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workday.md`](ats-workday.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Abbott` | | |
| 33 | +| `HOST` | `wd5` | | |
| 34 | +| `SITE` | `abbottcareers` | | |
| 35 | +| `TENANT` | `abbott` | | |
| 36 | +- **Throttle** : 0.7 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-22 22:14 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 | 90 % | | |
| 50 | +| `region` — Région | région administrative | 90 % | | |
| 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 | 40 % | | |
| 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 % | | |
| 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é, …) | 100 % | | |
| 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) | 90 % | | |
| 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. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_WORKDAY_DETAIL_LIMIT` | `300` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 20:56 — trouvées 10, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Abbott » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/acadierouge.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/acadierouge.md | |
| 7 | +Rôle : Fiche connecteur — Air Canada Rouge (employeur direct, ATS dayforce) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Air Canada Rouge (`acadierouge`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`dayforce`](ats-dayforce.md) · Statut registre : actif · Connecteur : `jobka/connectors/acadierouge.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Air Canada Rouge]() | |
| 20 | +- **Page carrières** : https://jobs.dayforcehcm.com/fr-CA/acvrouge/CANDIDATEPORTAL | |
| 21 | +- **Secteurs** : Aérospatiale | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-dayforce.md`](ats-dayforce.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `CANDIDATEPORTAL` | | |
| 33 | +| `CULTURE` | `fr-CA` | | |
| 34 | +| `EMPLOYER` | `Air Canada Rouge` | | |
| 35 | +| `NS` | `acvrouge` | | |
| 36 | +- **Throttle** : 0.8 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 52 | +| `postal_code` — Code postal | code postal si publié | 60 % | | |
| 53 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 80 % | | |
| 55 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 20 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 20 % | | |
| 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é, …) | 40 % | | |
| 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 | 0 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 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. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.8 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_DAYFORCE_DETAIL_LIMIT` | `80` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | + | |
| 84 | +- **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 1/5 actives (20 %) | |
| 86 | +- **GPS** : 5/5 actives (100 %) | |
| 87 | +- **Mode** : 0/5 actives (0 %) | |
| 88 | +- **Parution** : 5/5 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 20:56 — trouvées 5, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Air Canada Rouge » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/adeleexpressfr.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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-19 03:31 — trouvées 5, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 82 | +- **Dernier sync** : 2026-08-22 20:56 — trouvées 5, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/adi_albert_davidson_industries.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | 77 | - **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`) |
| 78 | 78 | - **Salaire** : 9/9 actives (100 %) |
| 79 | 79 | - **GPS** : 9/9 actives (100 %) |
| 80 | 80 | - **Mode** : 1/9 actives (11 %) |
| 81 | 81 | - **Parution** : 9/9 actives (100 %) |
| 82 | −- **Dernier sync** : 2026-08-19 03:31 — trouvées 9, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 82 | +- **Dernier sync** : 2026-08-22 20:56 — trouvées 9, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
added
docs/connecteurs/agiledss.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/agiledss.md | |
| 7 | +Rôle : Fiche connecteur — Agile DSS (employeur direct, ATS recruitee) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Agile DSS (`agiledss`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`recruitee`](ats-recruitee.md) · Statut registre : actif · Connecteur : `jobka/connectors/agiledss.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Agile DSS]() | |
| 20 | +- **Page carrières** : https://agiledss.recruitee.com | |
| 21 | +- **Secteurs** : TI | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-recruitee.md`](ats-recruitee.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Agile DSS` | | |
| 33 | +| `ORG` | `agiledss` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-22 22:14 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é | 75 % | | |
| 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) | 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 : *Data Engineer AWS* — Montréal · ∅ · parue le 2026-08-20. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 20:56 — trouvées 4, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Agile DSS » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/agnico_eagle.md
+12 −12
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **20 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 42 | +Complétude mesurée sur les **29 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 43 | 43 | |
| 44 | 44 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 45 | 45 | |---|---|---| |
@@ -52,13 +52,13 @@ Complétude mesurée sur les **20 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 / … | 5 % | | |
| 55 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 10 % | | |
| 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 | 95 % | | |
| 61 | +| `date_deadline` — Date limite | date limite pour postuler | 97 % | | |
| 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 % | |
@@ -80,15 +80,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 83 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 84 | 84 | |
| 85 | −- **Offres en base** : 20 (dont **20 actives**, 0 masquées comme doublons `dup_of`) | |
| 86 | −- **Salaire** : 0/20 actives (0 %) | |
| 87 | −- **GPS** : 20/20 actives (100 %) | |
| 88 | −- **Mode** : 0/20 actives (0 %) | |
| 89 | −- **Parution** : 0/20 actives (0 %) | |
| 90 | −- **Dernier sync** : 2026-08-19 03:31 — trouvées 20, +0, ~0, -0 | |
| 91 | −- **Syncs enregistrés** (`sync_log`) : 16 | |
| 85 | +- **Offres en base** : 34 (dont **29 actives**, 0 masquées comme doublons `dup_of`) | |
| 86 | +- **Salaire** : 0/29 actives (0 %) | |
| 87 | +- **GPS** : 29/29 actives (100 %) | |
| 88 | +- **Mode** : 0/29 actives (0 %) | |
| 89 | +- **Parution** : 0/29 actives (0 %) | |
| 90 | +- **Dernier sync** : 2026-08-22 20:56 — trouvées 29, +0, ~0, -0 | |
| 91 | +- **Syncs enregistrés** (`sync_log`) : 75 | |
| 92 | 92 | |
| 93 | 93 | ## Erreurs & dépannage |
| 94 | 94 | |
modified
docs/connecteurs/agropur.md
+19 −15
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **75 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **71 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -52,19 +52,19 @@ Complétude mesurée sur les **75 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 | 93 % | | |
| 56 | −| `salary_label` — Libellé salaire | texte salarial original | 93 % | | |
| 55 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 94 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 94 % | | |
| 57 | 57 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | |
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 61 % | | |
| 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) | 99 % | |
| 66 | 66 | |
| 67 | −Exemple réel : *Manager, Commercial Transformation and Process Optimization* — Québec · Salary scale 006: $100 900 to $126 100 ( Base salary will be determined based on your acad… · parue le 2026-08-18. | |
| 67 | +Exemple réel : *Opérateur 3* — Québec · Salaire débutant à 32.27$ · parue le 2026-08-21. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,19 +79,23 @@ Exemple réel : *Manager, Commercial Transformation and Process Optimization* | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 75 (dont **75 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 70/75 actives (93 %) | |
| 86 | −- **GPS** : 74/75 actives (99 %) | |
| 87 | −- **Mode** : 0/75 actives (0 %) | |
| 88 | −- **Parution** : 75/75 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:32 — trouvées 75, +0, ~67, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 84 | +- **Offres en base** : 81 (dont **71 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 67/71 actives (94 %) | |
| 86 | +- **GPS** : 70/71 actives (99 %) | |
| 87 | +- **Mode** : 0/71 actives (0 %) | |
| 88 | +- **Parution** : 71/71 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 20:56 — trouvées 71, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 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) | 1 | 2026-08-22 03:18 | | |
| 95 | 99 | |
| 96 | 100 | - 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;"` |
| 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/airbus.md
+17 −11
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **75 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **83 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -79,19 +79,25 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 75 (dont **75 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 1/75 actives (1 %) | |
| 86 | −- **GPS** : 75/75 actives (100 %) | |
| 87 | −- **Mode** : 0/75 actives (0 %) | |
| 88 | −- **Parution** : 75/75 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:36 — trouvées 75, +0, ~75, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 84 | +- **Offres en base** : 85 (dont **83 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 1/83 actives (1 %) | |
| 86 | +- **GPS** : 83/83 actives (100 %) | |
| 87 | +- **Mode** : 0/83 actives (0 %) | |
| 88 | +- **Parution** : 83/83 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 20:58 — trouvées 83, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 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) | 1 | 2026-08-22 03:18 | | |
| 99 | +| 520 Server Error: <none> for url: https://ag.wd3.myworkdayjobs.com/wday/cxs/ag/Airbus/jobs | 1 | 2026-08-21 00:25 | | |
| 100 | +| HTTPSConnectionPool(host='ag.wd3.myworkdayjobs.com', port=443): Read timed out. (read time… | 1 | 2026-08-19 16:51 | | |
| 95 | 101 | |
| 96 | 102 | - Rejouer un sync isolé : `.venv/bin/python run.py sync airbus` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='airbus' 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/ajwalter.md
+12 −12
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -56,13 +56,13 @@ Complétude mesurée sur les **7 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é, …) | 43 % | | |
| 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 | 100 % | |
| 63 | 63 | | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | |
| 64 | 64 | |
| 65 | −Exemple réel : *Analyste, Soutien à la production - Production Support Analyst* — Montréal · ∅ · parue le 2026-08-14. | |
| 65 | +Exemple réel : *Spécialiste des ventes - Inside Sales Specialist* — Montréal · ∅ · parue le 2026-08-21. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Analyste, Soutien à la production - Production Support Analyst | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | −- **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | −- **Salaire** : 0/7 actives (0 %) | |
| 79 | −- **GPS** : 7/7 actives (100 %) | |
| 80 | −- **Mode** : 7/7 actives (100 %) | |
| 81 | −- **Parution** : 7/7 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:36 — trouvées 7, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 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-22 20:58 — trouvées 8, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
added
docs/connecteurs/alan.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/alan.md | |
| 7 | +Rôle : Fiche connecteur — Alan Canada (employeur direct, ATS ashby) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Alan Canada (`alan`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`ashby`](ats-ashby.md) · Statut registre : actif · Connecteur : `jobka/connectors/alan.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Alan Canada]() | |
| 20 | +- **Page carrières** : https://jobs.ashbyhq.com/alan | |
| 21 | +- **Secteurs** : Assurance | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-ashby.md`](ats-ashby.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Alan Canada` | | |
| 33 | +| `ORG` | `alan` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 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) | 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 : *Psychothérapeute - Québec* — Québec · ∅ · parue le 2026-07-21. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 20:58 — trouvées 1, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Alan Canada » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/alayacare.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | 77 | - **Offres en base** : 10 (dont **9 actives**, 0 masquées comme doublons `dup_of`) |
| 78 | 78 | - **Salaire** : 0/9 actives (0 %) |
| 79 | 79 | - **GPS** : 9/9 actives (100 %) |
| 80 | 80 | - **Mode** : 0/9 actives (0 %) |
| 81 | 81 | - **Parution** : 9/9 actives (100 %) |
| 82 | −- **Dernier sync** : 2026-08-19 03:36 — trouvées 9, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 82 | +- **Dernier sync** : 2026-08-22 20:58 — trouvées 9, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/alcoa.md
+21 −17
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **16 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -46,23 +46,23 @@ 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 | 56 % | | |
| 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 | 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 | 12 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 12 % | | |
| 57 | 57 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | |
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 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 | −| `gps` — GPS | lat/lng (géocodage sans invention) | 40 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 44 % | | |
| 66 | 66 | |
| 67 | 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. |
| 68 | 68 | |
@@ -79,19 +79,23 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 16 (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-19 03:36 — trouvées 15, +0, ~12, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 84 | +- **Offres en base** : 17 (dont **16 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 2/16 actives (12 %) | |
| 86 | +- **GPS** : 7/16 actives (44 %) | |
| 87 | +- **Mode** : 0/16 actives (0 %) | |
| 88 | +- **Parution** : 16/16 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 20:58 — trouvées 16, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 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) | 1 | 2026-08-22 03:18 | | |
| 95 | 99 | |
| 96 | 100 | - 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;"` |
| 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/alimentiv_2.md
+12 −12
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -60,9 +60,9 @@ Complétude mesurée sur les **2 offres actives** de la source (base live, 2026- | ||
| 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) | 50 % | | |
| 63 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 25 % | | |
| 64 | 64 | |
| 65 | −Exemple réel : *Statistician* — ∅ · ∅ · parue le 2026-07-28. | |
| 65 | +Exemple réel : *ERP System Administrator (Acumatica)* — ∅ · ∅ · parue le 2026-08-22. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Statistician* — ∅ · ∅ · parue le 2026-07-28. | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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** : 1/2 actives (50 %) | |
| 80 | −- **Mode** : 2/2 actives (100 %) | |
| 81 | −- **Parution** : 2/2 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:36 — trouvées 2, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 77 | +- **Offres en base** : 4 (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-22 20:58 — trouvées 4, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
added
docs/connecteurs/allstate.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/allstate.md | |
| 7 | +Rôle : Fiche connecteur — Allstate Canada (employeur direct, ATS workday) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Allstate Canada (`allstate`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workday`](ats-workday.md) · Statut registre : actif · Connecteur : `jobka/connectors/allstate.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Allstate Canada]() | |
| 20 | +- **Page carrières** : https://allstate.wd5.myworkdayjobs.com/allstate_careers | |
| 21 | +- **Secteurs** : Assurance | |
| 22 | +- **Région** : Québec | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workday.md`](ats-workday.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Allstate Canada` | | |
| 33 | +| `HOST` | `wd5` | | |
| 34 | +| `SITE` | `allstate_careers` | | |
| 35 | +| `TENANT` | `allstate` | | |
| 36 | +- **Throttle** : 0.7 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **13 offres actives** de la source (base live, 2026-08-22 22:14 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 | 85 % | | |
| 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 | 15 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | | |
| 55 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 23 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 23 % | | |
| 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é, …) | 92 % | | |
| 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) | 85 % | | |
| 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. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_WORKDAY_DETAIL_LIMIT` | `300` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | + | |
| 84 | +- **Offres en base** : 13 (dont **13 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 3/13 actives (23 %) | |
| 86 | +- **GPS** : 11/13 actives (85 %) | |
| 87 | +- **Mode** : 2/13 actives (15 %) | |
| 88 | +- **Parution** : 13/13 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 13, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Allstate Canada » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/aloyoga.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/aloyoga.md | |
| 7 | +Rôle : Fiche connecteur — Alo Yoga (employeur direct, ATS greenhouse) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Alo Yoga (`aloyoga`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`greenhouse`](ats-greenhouse.md) · Statut registre : actif · Connecteur : `jobka/connectors/aloyoga.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Alo Yoga]() | |
| 20 | +- **Page carrières** : https://job-boards.greenhouse.io/aloyoga | |
| 21 | +- **Secteurs** : Commerce de détail | |
| 22 | +- **Région** : Laval | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-greenhouse.md`](ats-greenhouse.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `aloyoga` | | |
| 33 | +| `EMPLOYER` | `Alo Yoga` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-22 22:14 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 / … | 67 % | | |
| 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é, …) | 78 % | | |
| 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) | 78 % | | |
| 64 | + | |
| 65 | +Exemple réel : *Operations Associate (Part-Time) \| Associé aux opérations - CF Carrefour Laval* — Québec · ∅ · parue le 2026-08-18. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 20:59 — trouvées 9, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Alo Yoga » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/alphanumeric_systems.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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-19 03:36 — trouvées 5, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 82 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 5, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/altasciences.md
+13 −9
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **29 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **29 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -54,7 +54,7 @@ Complétude mesurée sur les **29 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 | 0 % | |
| 56 | 56 | | `salary_label` — Libellé salaire | texte salarial original | 0 % | |
| 57 | −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 3 % | | |
| 57 | +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | | |
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 59 | 59 | | `date_posted` — Date de parution | ISO 8601 | 100 % | |
| 60 | 60 | | `date_deadline` — Date limite | date limite pour postuler | 0 % | |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **29 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 : *Medical Equipment and Systems Specialist* — Montréal · ∅ · parue le 2026-08-11. | |
| 67 | +Exemple réel : *Technician, Reference Standard* — Québec · ∅ · parue le 2026-08-19. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,19 +79,23 @@ Exemple réel : *Medical Equipment and Systems Specialist* — Montréal · ∅ | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 29 (dont **29 actives**, 0 masquées comme doublons `dup_of`) | |
| 84 | +- **Offres en base** : 32 (dont **29 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | 85 | - **Salaire** : 0/29 actives (0 %) |
| 86 | 86 | - **GPS** : 29/29 actives (100 %) |
| 87 | 87 | - **Mode** : 28/29 actives (97 %) |
| 88 | 88 | - **Parution** : 29/29 actives (100 %) |
| 89 | −- **Dernier sync** : 2026-08-19 03:36 — trouvées 29, +0, ~12, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 89 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 29, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 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) | 1 | 2026-08-22 03:18 | | |
| 95 | 99 | |
| 96 | 100 | - 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;"` |
| 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/amilia.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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** : 1/1 actives (100 %) |
| 81 | 81 | - **Parution** : 1/1 actives (100 %) |
| 82 | −- **Dernier sync** : 2026-08-19 03:36 — trouvées 1, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 82 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 1, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/anciapersonnelinc.md
+10 −10
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **59 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **60 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | −- **Offres en base** : 60 (dont **59 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | −- **Salaire** : 6/59 actives (10 %) | |
| 79 | −- **GPS** : 59/59 actives (100 %) | |
| 80 | −- **Mode** : 59/59 actives (100 %) | |
| 81 | −- **Parution** : 59/59 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:36 — trouvées 59, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 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-22 20:59 — trouvées 60, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/appdirect.md
+11 −11
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -50,19 +50,19 @@ Complétude mesurée sur les **24 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 | 25 % | | |
| 54 | −| `salary_label` — Libellé salaire | texte salarial original | 25 % | | |
| 53 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 42 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 42 % | | |
| 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 % | |
| 58 | 58 | | `date_deadline` — Date limite | date limite pour postuler | 0 % | |
| 59 | −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 92 % | | |
| 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 | 0 % | |
| 63 | 63 | | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | |
| 64 | 64 | |
| 65 | −Exemple réel : *Développeur/Développeuse Logiciel Senior - PHP* — Montréal · $95,000 — $130,000 CAD · parue le 2026-08-13. | |
| 65 | +Exemple réel : *Customer Success Manager* — Montréal · $92,000 — $121,000 CAD · parue le 2026-08-21. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Développeur/Développeuse Logiciel Senior - PHP* — Montréal | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | −- **Offres en base** : 24 (dont **24 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | −- **Salaire** : 6/24 actives (25 %) | |
| 77 | +- **Offres en base** : 28 (dont **24 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 10/24 actives (42 %) | |
| 79 | 79 | - **GPS** : 24/24 actives (100 %) |
| 80 | 80 | - **Mode** : 0/24 actives (0 %) |
| 81 | 81 | - **Parution** : 24/24 actives (100 %) |
| 82 | −- **Dernier sync** : 2026-08-19 03:36 — trouvées 24, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 82 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 24, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
added
docs/connecteurs/aritzia.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/aritzia.md | |
| 7 | +Rôle : Fiche connecteur — Aritzia (employeur direct, ATS workday) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Aritzia (`aritzia`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workday`](ats-workday.md) · Statut registre : actif · Connecteur : `jobka/connectors/aritzia.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Aritzia]() | |
| 20 | +- **Page carrières** : https://aritzia.wd3.myworkdayjobs.com/external | |
| 21 | +- **Secteurs** : Commerce de détail | |
| 22 | +- **Région** : Laval | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workday.md`](ats-workday.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Aritzia` | | |
| 33 | +| `HOST` | `wd3` | | |
| 34 | +| `SITE` | `external` | | |
| 35 | +| `TENANT` | `aritzia` | | |
| 36 | +- **Throttle** : 0.7 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **11 offres actives** de la source (base live, 2026-08-22 22:14 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 | 64 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 64 % | | |
| 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é, …) | 100 % | | |
| 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) | 100 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Associé·e de la vente au détail - Montreal Premium Outlets* — Montréal · Nous sommes fier∙ères d'offrir les meilleurs salaires du secteur à partir de 20-30 $/h, av… · parue le 2026-07-23. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_WORKDAY_DETAIL_LIMIT` | `300` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | + | |
| 84 | +- **Offres en base** : 11 (dont **11 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 7/11 actives (64 %) | |
| 86 | +- **GPS** : 11/11 actives (100 %) | |
| 87 | +- **Mode** : 0/11 actives (0 %) | |
| 88 | +- **Parution** : 11/11 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 11, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Aritzia » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/artelia.md
+109 −0
@@ -0,0 +1,109 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/artelia.md | |
| 7 | +Rôle : Fiche connecteur — Artelia Canada (employeur direct, ATS smartrecruiters) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Artelia Canada (`artelia`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`smartrecruiters`](ats-smartrecruiters.md) · Statut registre : actif · Connecteur : `jobka/connectors/artelia.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Artelia Canada]() | |
| 20 | +- **Page carrières** : https://jobs.smartrecruiters.com/company/artelia | |
| 21 | +- **Secteurs** : Ingénierie | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-smartrecruiters.md`](ats-smartrecruiters.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `COMPANY` | `artelia` | | |
| 33 | +| `EMPLOYER` | `Artelia Canada` | | |
| 34 | +- **Throttle** : 0.7 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **115 offres actives** de la source (base live, 2026-08-22 22:14 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 | 24 % | | |
| 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é, …) | 58 % | | |
| 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) | 98 % | | |
| 64 | + | |
| 65 | +Exemple réel : *Technicien·ne en infrastructures urbaines* — Sherbrooke · ∅ · parue le 2026-08-21. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 72 | + | |
| 73 | +| Variable | Défaut | | |
| 74 | +|---|---| | |
| 75 | +| `JOBKA_SR_DETAIL_LIMIT` | `300` | | |
| 76 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 77 | + | |
| 78 | +## Volumétrie & complétude live | |
| 79 | + | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | + | |
| 82 | +- **Offres en base** : 115 (dont **115 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | +- **Salaire** : 0/115 actives (0 %) | |
| 84 | +- **GPS** : 113/115 actives (98 %) | |
| 85 | +- **Mode** : 28/115 actives (24 %) | |
| 86 | +- **Parution** : 115/115 actives (100 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 115, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 89 | + | |
| 90 | +## Erreurs & dépannage | |
| 91 | + | |
| 92 | +Aucune erreur dans `sync_log` pour cette source. | |
| 93 | + | |
| 94 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 96 | + | |
| 97 | +## Licence / conformité | |
| 98 | + | |
| 99 | +**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 Artelia Canada » 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. | |
| 100 | + | |
| 101 | +## Historique | |
| 102 | + | |
| 103 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 104 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 105 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 106 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 107 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 108 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 109 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/astucemedia.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -77,15 +77,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | 82 | - **Offres en base** : 5 (dont **5 actives**, 0 masquées comme doublons `dup_of`) |
| 83 | 83 | - **Salaire** : 0/5 actives (0 %) |
| 84 | 84 | - **GPS** : 5/5 actives (100 %) |
| 85 | 85 | - **Mode** : 2/5 actives (40 %) |
| 86 | 86 | - **Parution** : 5/5 actives (100 %) |
| 87 | −- **Dernier sync** : 2026-08-19 03:36 — trouvées 5, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 87 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 5, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/atecna_montreal.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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-19 03:36 — trouvées 1, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 82 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 1, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/atlas_workland.md
+22 −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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **1238 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 33 | +Complétude mesurée sur les **1301 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 34 | 34 | |
| 35 | 35 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 36 | 36 | |---|---|---| |
@@ -41,22 +41,22 @@ Complétude mesurée sur les **1238 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é | 82 % | | |
| 45 | −| `work_mode` — Mode | presentiel / hybride / teletravail | 82 % | | |
| 46 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 71 % | | |
| 47 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 36 % | | |
| 48 | −| `salary_label` — Libellé salaire | texte salarial original | 36 % | | |
| 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 % | | |
| 49 | 49 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | |
| 50 | 50 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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 : *Acheteuse ou acheteur* — Sorel-Tracy · : 26,18 $/heure Max · parue le 2026-08-18. | |
| 59 | +Exemple réel : *Technicien comptabilité et finances* — Candiac · Salaire horaire se situant entre 42.16 $ et 49.02 $ s’établissant en fonction de l’expérie… · parue le 2026-08-22. | |
| 60 | 60 | |
| 61 | 61 | ## Fréquence & budgets |
| 62 | 62 | |
@@ -66,19 +66,23 @@ Exemple réel : *Acheteuse ou acheteur* — Sorel-Tracy · : 26,18 $/heure Max | ||
| 66 | 66 | |
| 67 | 67 | ## Volumétrie & complétude live |
| 68 | 68 | |
| 69 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 69 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 70 | 70 | |
| 71 | −- **Offres en base** : 1238 (dont **1238 actives**, 13 masquées comme doublons `dup_of`) | |
| 72 | −- **Salaire** : 441/1238 actives (36 %) | |
| 73 | −- **GPS** : 1238/1238 actives (100 %) | |
| 74 | −- **Mode** : 1014/1238 actives (82 %) | |
| 75 | −- **Parution** : 1238/1238 actives (100 %) | |
| 76 | −- **Dernier sync** : 2026-08-19 04:45 — trouvées 1238, +1238, ~0, -0 | |
| 77 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 71 | +- **Offres en base** : 1456 (dont **1301 actives**, 13 masquées comme doublons `dup_of`) | |
| 72 | +- **Salaire** : 444/1301 actives (34 %) | |
| 73 | +- **GPS** : 1301/1301 actives (100 %) | |
| 74 | +- **Mode** : 1056/1301 actives (81 %) | |
| 75 | +- **Parution** : 1301/1301 actives (100 %) | |
| 76 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 1301, +0, ~0, -0 | |
| 77 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 78 | 78 | |
| 79 | 79 | ## Erreurs & dépannage |
| 80 | 80 | |
| 81 | −Aucune erreur dans `sync_log` pour cette source. | |
| 81 | +Erreurs relevées dans `sync_log` : | |
| 82 | + | |
| 83 | +| Erreur | Occurrences | Dernière fois | | |
| 84 | +|---|---|---| | |
| 85 | +| HTTPSConnectionPool(host='jobs-prod.workland.com', port=443): Read timed out. (read timeou… | 1 | 2026-08-22 04:52 | | |
| 82 | 86 | |
| 83 | 87 | - 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;"` |
| 84 | 88 | - Garde-fous : une source qui retourne ≤ 25 % de sa médiane 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
+7 −7
@@ -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 5 tenants |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**5 employeurs connectés** via cette plateforme — **28 offres actives**. Module partagé : `jobka/connectors/adp.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**5 employeurs connectés** via cette plateforme — **27 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,11 +40,11 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 40 | 40 | |
| 41 | 41 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | |
| 42 | 42 | |---|---|---|---|---|---|---| |
| 43 | −| [Bento Sushi](bento_sushi.md) | 9 | 89 % | 0 % | 0 % | 2026-08-19 04:49 | ✅ | | |
| 44 | −| [Cultures Gen V](cultures_genv.md) | 6 | 33 % | 0 % | 0 % | 2026-08-19 04:49 | ✅ | | |
| 45 | −| [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | 6 | 50 % | 100 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 46 | −| [MSI Gestion immobilière](msi_gestion.md) | 6 | 100 % | 100 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 47 | −| [Osgoode Properties](osgoode_properties.md) | 1 | 100 % | 0 % | 0 % | 2026-08-19 04:49 | ✅ | | |
| 43 | +| [Bento Sushi](bento_sushi.md) | 9 | 89 % | 100 % | 0 % | 2026-08-22 21:00 | ✅ | | |
| 44 | +| [Cultures Gen V](cultures_genv.md) | 6 | 33 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 45 | +| [Mitsubishi HC Capital Canada](mitsubishi_hc_capital.md) | 6 | 50 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 46 | +| [MSI Gestion immobilière](msi_gestion.md) | 5 | 100 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 47 | +| [Osgoode Properties](osgoode_properties.md) | 1 | 100 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 48 | 48 | |
| 49 | 49 | ## Licence / conformité |
| 50 | 50 | |
modified
docs/connecteurs/ats-ashby.md
+19 −14
@@ -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-ashby.md |
| 7 | −Rôle : Fiche plateforme ATS ashby — mécanique partagée + tableau des 11 tenants | |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 7 | +Rôle : Fiche plateforme ATS ashby — mécanique partagée + tableau des 16 tenants | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**11 employeurs connectés** via cette plateforme — **213 offres actives**. Module partagé : `jobka/connectors/ashby.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**16 employeurs connectés** via cette plateforme — **219 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,17 +40,22 @@ Généré : 2026-08-19 05:40 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) | 78 | 6 % | 83 % | 100 % | 2026-08-19 04:10 | ✅ | | |
| 44 | −| [Lightspeed Commerce](lightspeedhq.md) | 56 | 7 % | 98 % | 100 % | 2026-08-19 04:10 | ✅ | | |
| 45 | −| [Cohere](cohere.md) | 46 | 17 % | 37 % | 100 % | 2026-08-19 03:52 | ✅ | | |
| 46 | −| [Tetrix](tetrix.md) | 9 | 100 % | 11 % | 100 % | 2026-08-19 04:24 | ✅ | | |
| 47 | −| [Hopper](hopper.md) | 6 | 0 % | 67 % | 100 % | 2026-08-19 04:02 | ✅ | | |
| 48 | −| [Mistral AI](mistral_ai.md) | 5 | 0 % | 100 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 49 | −| [Nomic Bio](nomic.md) | 4 | 0 % | 75 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 50 | −| [Fuse Energy](fuse.md) | 3 | 0 % | 100 % | 0 % | 2026-08-19 03:56 | ✅ | | |
| 51 | −| [No Saint](no_saint.md) | 3 | 0 % | 100 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 52 | −| [Vasco](vasco.md) | 2 | 0 % | 100 % | 100 % | 2026-08-19 04:25 | ✅ | | |
| 53 | −| [Industrious](industrious.md) | 1 | 0 % | 100 % | 0 % | 2026-08-19 04:03 | ✅ | | |
| 43 | +| [MaintainX](maintainx.md) | 72 | 6 % | 86 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 44 | +| [Lightspeed Commerce](lightspeedhq.md) | 61 | 8 % | 98 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 45 | +| [Cohere](cohere.md) | 44 | 16 % | 36 % | 100 % | 2026-08-22 21:08 | ✅ | | |
| 46 | +| [Tetrix](tetrix.md) | 9 | 100 % | 11 % | 100 % | 2026-08-22 21:29 | ✅ | | |
| 47 | +| [Hopper](hopper.md) | 5 | 0 % | 60 % | 100 % | 2026-08-22 21:15 | ✅ | | |
| 48 | +| [Mistral AI](mistral_ai.md) | 5 | 0 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 49 | +| [Nomic Bio](nomic.md) | 5 | 0 % | 80 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 50 | +| [Neo Financial](neofinancial.md) | 4 | 100 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 51 | +| [Fuse Energy](fuse.md) | 3 | 0 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 52 | +| [No Saint](no_saint.md) | 3 | 0 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 53 | +| [Exegy](exegy.md) | 2 | 0 % | 100 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 54 | +| [Lambda](lambda.md) | 2 | 100 % | 100 % | 100 % | 2026-08-22 21:21 | ✅ | | |
| 55 | +| [Industrious](industrious.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:15 | ✅ | | |
| 56 | +| [Vasco](vasco.md) | 1 | 0 % | 100 % | 100 % | 2026-08-22 21:30 | ✅ | | |
| 57 | +| [Alan Canada](alan.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 20:58 | ✅ | | |
| 58 | +| [Billups](billups.md) | 1 | 100 % | 100 % | 100 % | 2026-08-22 21:00 | ✅ | | |
| 54 | 59 | |
| 55 | 60 | ## Licence / conformité |
| 56 | 61 | |
modified
docs/connecteurs/ats-bamboohr.md
+33 −33
@@ -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 31 tenants |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**31 employeurs connectés** via cette plateforme — **227 offres actives**. Module partagé : `jobka/connectors/bamboohr.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**31 employeurs connectés** via cette plateforme — **231 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,37 +43,37 @@ Généré : 2026-08-19 05:40 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) | 23 | 0 % | 100 % | 100 % | 2026-08-19 03:41 | ✅ | | |
| 47 | −| [dcbel](dcbel.md) | 20 | 0 % | 100 % | 100 % | 2026-08-19 03:52 | ✅ | | |
| 48 | −| [Explorance](explorance.md) | 18 | 0 % | 100 % | 100 % | 2026-08-19 03:56 | ✅ | | |
| 49 | −| [Produits Labelink](labelink.md) | 17 | 0 % | 100 % | 100 % | 2026-08-19 04:10 | ✅ | | |
| 50 | −| [OPAL-RT Technologies](opalrt.md) | 13 | 0 % | 100 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 51 | −| [Victoria Park Medispa](vicpark.md) | 13 | 0 % | 100 % | 100 % | 2026-08-19 04:25 | ✅ | | |
| 52 | −| [Logisco](logisco.md) | 12 | 42 % | 100 % | 100 % | 2026-08-19 04:10 | ✅ | | |
| 53 | −| [KPI Digital](kpidigital.md) | 11 | 0 % | 100 % | 100 % | 2026-08-19 04:10 | ✅ | | |
| 54 | −| [Big Bang](bigbang.md) | 8 | 25 % | 100 % | 100 % | 2026-08-19 03:39 | ✅ | | |
| 55 | −| [Devimco Appartements](devimco.md) | 8 | 12 % | 100 % | 100 % | 2026-08-19 03:55 | ✅ | | |
| 56 | −| [Robotiq](robotiq.md) | 7 | 0 % | 100 % | 100 % | 2026-08-19 04:17 | ✅ | | |
| 57 | −| [MXO](mxo.md) | 6 | 83 % | 100 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 58 | −| [Nexapp](nexapp.md) | 6 | 0 % | 100 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 59 | −| [North West Rubber](northwestrubber.md) | 6 | 0 % | 100 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 60 | −| [Portage CyberTech](portagecybertech.md) | 6 | 17 % | 100 % | 100 % | 2026-08-19 04:16 | ✅ | | |
| 61 | −| [Toon Boom Animation](toonboom.md) | 6 | 0 % | 100 % | 100 % | 2026-08-19 04:24 | ✅ | | |
| 62 | −| [Triotech](triotech.md) | 6 | 17 % | 100 % | 100 % | 2026-08-19 04:24 | ✅ | | |
| 63 | −| [Propriétés Scalia](scalia.md) | 5 | 20 % | 100 % | 100 % | 2026-08-19 04:18 | ✅ | | |
| 64 | −| [Surmesur](surmesur.md) | 5 | 80 % | 100 % | 100 % | 2026-08-19 04:19 | ✅ | | |
| 65 | −| [EOS Aircraft](eosaircraftinc.md) | 4 | 0 % | 100 % | 100 % | 2026-08-19 03:55 | ✅ | | |
| 66 | −| [Korem](korem.md) | 4 | 0 % | 100 % | 100 % | 2026-08-19 04:10 | ✅ | | |
| 67 | −| [Mitacs](mitacs.md) | 4 | 100 % | 100 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 68 | −| [EVLO (Hydro-Québec)](evlo.md) | 3 | 0 % | 100 % | 100 % | 2026-08-19 03:55 | ✅ | | |
| 69 | −| [Rethink](rethinkcanada.md) | 3 | 0 % | 100 % | 100 % | 2026-08-19 04:16 | ✅ | | |
| 70 | −| [Groupe BC2](bc2.md) | 2 | 0 % | 100 % | 100 % | 2026-08-19 03:38 | ✅ | | |
| 71 | −| [Aliments Ouimet-Cordon Bleu inc.](cordonbleu.md) | 2 | 50 % | 100 % | 100 % | 2026-08-19 03:52 | ✅ | | |
| 72 | −| [Fenêtres Concept](fenetresconcept.md) | 2 | 100 % | 100 % | 100 % | 2026-08-19 03:56 | ✅ | | |
| 73 | −| [Flare (cybersécurité)](flare.md) | 2 | 50 % | 100 % | 100 % | 2026-08-19 03:56 | ✅ | | |
| 74 | −| [OTT Financial](ott.md) | 2 | 0 % | 100 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 75 | −| [Ziptrek Tremblant](ziptrekeco.md) | 2 | 100 % | 100 % | 100 % | 2026-08-19 04:35 | ✅ | | |
| 76 | −| [Poulet Rouge](pouletrouge.md) | 1 | 0 % | 100 % | 100 % | 2026-08-19 04:16 | ✅ | | |
| 46 | +| [Broccolini](broccolini.md) | 22 | 0 % | 100 % | 100 % | 2026-08-22 21:04 | ✅ | | |
| 47 | +| [dcbel](dcbel.md) | 21 | 0 % | 100 % | 100 % | 2026-08-22 21:08 | ✅ | | |
| 48 | +| [Explorance](explorance.md) | 19 | 0 % | 100 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 49 | +| [Produits Labelink](labelink.md) | 18 | 0 % | 100 % | 100 % | 2026-08-22 21:21 | ✅ | | |
| 50 | +| [Victoria Park Medispa](vicpark.md) | 15 | 0 % | 100 % | 100 % | 2026-08-22 21:30 | ✅ | | |
| 51 | +| [OPAL-RT Technologies](opalrt.md) | 13 | 0 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 52 | +| [KPI Digital](kpidigital.md) | 11 | 0 % | 100 % | 100 % | 2026-08-22 21:21 | ✅ | | |
| 53 | +| [Logisco](logisco.md) | 11 | 36 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 54 | +| [Big Bang](bigbang.md) | 8 | 25 % | 100 % | 100 % | 2026-08-22 21:00 | ✅ | | |
| 55 | +| [Devimco Appartements](devimco.md) | 8 | 12 % | 100 % | 100 % | 2026-08-22 21:09 | ✅ | | |
| 56 | +| [Portage CyberTech](portagecybertech.md) | 8 | 38 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 57 | +| [Nexapp](nexapp.md) | 7 | 0 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 58 | +| [Robotiq](robotiq.md) | 7 | 0 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 59 | +| [Toon Boom Animation](toonboom.md) | 7 | 0 % | 100 % | 100 % | 2026-08-22 21:30 | ✅ | | |
| 60 | +| [MXO](mxo.md) | 6 | 83 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 61 | +| [North West Rubber](northwestrubber.md) | 6 | 0 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 62 | +| [Propriétés Scalia](scalia.md) | 5 | 20 % | 100 % | 100 % | 2026-08-22 21:24 | ✅ | | |
| 63 | +| [Surmesur](surmesur.md) | 5 | 80 % | 100 % | 100 % | 2026-08-22 21:26 | ✅ | | |
| 64 | +| [Triotech](triotech.md) | 5 | 0 % | 100 % | 100 % | 2026-08-22 21:30 | ✅ | | |
| 65 | +| [EOS Aircraft](eosaircraftinc.md) | 4 | 0 % | 100 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 66 | +| [Korem](korem.md) | 4 | 0 % | 100 % | 100 % | 2026-08-22 21:21 | ✅ | | |
| 67 | +| [Mitacs](mitacs.md) | 4 | 100 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 68 | +| [EVLO (Hydro-Québec)](evlo.md) | 3 | 0 % | 100 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 69 | +| [Groupe BC2](bc2.md) | 2 | 0 % | 100 % | 100 % | 2026-08-22 21:00 | ✅ | | |
| 70 | +| [Fenêtres Concept](fenetresconcept.md) | 2 | 100 % | 100 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 71 | +| [Flare (cybersécurité)](flare.md) | 2 | 50 % | 100 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 72 | +| [OTT Financial](ott.md) | 2 | 0 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 73 | +| [Rethink](rethinkcanada.md) | 2 | 0 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 74 | +| [Ziptrek Tremblant](ziptrekeco.md) | 2 | 100 % | 100 % | 100 % | 2026-08-22 21:32 | ✅ | | |
| 75 | +| [Aliments Ouimet-Cordon Bleu inc.](cordonbleu.md) | 1 | 100 % | 100 % | 100 % | 2026-08-22 21:08 | ✅ | | |
| 76 | +| [Poulet Rouge](pouletrouge.md) | 1 | 0 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 77 | 77 | |
| 78 | 78 | ## Licence / conformité |
| 79 | 79 | |
modified
docs/connecteurs/ats-breezy.md
+25 −17
@@ -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-breezy.md |
| 7 | −Rôle : Fiche plateforme ATS breezy — mécanique partagée + tableau des 14 tenants | |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 7 | +Rôle : Fiche plateforme ATS breezy — mécanique partagée + tableau des 22 tenants | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**14 employeurs connectés** via cette plateforme — **135 offres actives**. Module partagé : `jobka/connectors/breezy.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**22 employeurs connectés** via cette plateforme — **188 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,20 +37,28 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 37 | 37 | |
| 38 | 38 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | |
| 39 | 39 | |---|---|---|---|---|---|---| |
| 40 | −| [Brand Momentum](brandmomentum.md) | 30 | 70 % | 100 % | 0 % | 2026-08-19 03:41 | ✅ | | |
| 41 | −| [NOVIPRO](novipro.md) | 17 | 0 % | 100 % | 24 % | 2026-08-19 04:15 | ✅ | | |
| 42 | −| [Réseau Mieux-Être](reseau_mieux_etre.md) | 15 | 0 % | 100 % | 13 % | 2026-08-19 04:16 | ✅ | | |
| 43 | −| [MicroHabitat](microhabitat.md) | 13 | 100 % | 100 % | 38 % | 2026-08-19 04:15 | ✅ | | |
| 44 | −| [3 Brasseurs Canada](trois_brasseurs.md) | 11 | 73 % | 100 % | 100 % | 2026-08-19 04:24 | ✅ | | |
| 45 | −| [EQ3](eq3_ltd.md) | 10 | 60 % | 100 % | 0 % | 2026-08-19 03:55 | ✅ | | |
| 46 | −| [ADI - Albert Davidson Industries](adi_albert_davidson_industries.md) | 9 | 100 % | 100 % | 11 % | 2026-08-19 03:31 | ✅ | | |
| 47 | −| [Nora Pharma](nora_pharma.md) | 9 | 100 % | 89 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 48 | −| [Luqia (INO)](ino_ca.md) | 7 | 0 % | 100 % | 0 % | 2026-08-19 04:03 | ✅ | | |
| 49 | −| [Alphanumeric Systems](alphanumeric_systems.md) | 5 | 100 % | 100 % | 40 % | 2026-08-19 03:36 | ✅ | | |
| 50 | −| [VOXDATA](voxdata.md) | 5 | 100 % | 100 % | 100 % | 2026-08-19 04:25 | ✅ | | |
| 51 | −| [Vaporus](vaporus_inc.md) | 2 | 100 % | 50 % | 0 % | 2026-08-19 04:25 | ✅ | | |
| 52 | −| [Canada Global Recruitment](canada_global.md) | 1 | 0 % | 0 % | 0 % | 2026-08-19 03:42 | ✅ | | |
| 53 | −| [YouSet](youset.md) | 1 | 0 % | 100 % | 100 % | 2026-08-19 04:35 | ✅ | | |
| 40 | +| [Brand Momentum](brandmomentum.md) | 32 | 72 % | 100 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 41 | +| [Progesys](progesys_inc.md) | 24 | 4 % | 96 % | 4 % | 2026-08-22 21:23 | ✅ | | |
| 42 | +| [NOVIPRO](novipro.md) | 17 | 0 % | 100 % | 24 % | 2026-08-22 21:22 | ✅ | | |
| 43 | +| [Réseau Mieux-Être](reseau_mieux_etre.md) | 14 | 0 % | 100 % | 14 % | 2026-08-22 21:23 | ✅ | | |
| 44 | +| [MicroHabitat](microhabitat.md) | 13 | 100 % | 100 % | 38 % | 2026-08-22 21:22 | ✅ | | |
| 45 | +| [3 Brasseurs Canada](trois_brasseurs.md) | 11 | 73 % | 100 % | 100 % | 2026-08-22 21:30 | ✅ | | |
| 46 | +| [EQ3](eq3_ltd.md) | 10 | 60 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 47 | +| [BDL Énergie](bdl_energie.md) | 10 | 0 % | 30 % | 0 % | 2026-08-22 21:00 | ✅ | | |
| 48 | +| [ADI - Albert Davidson Industries](adi_albert_davidson_industries.md) | 9 | 100 % | 100 % | 11 % | 2026-08-22 20:56 | ✅ | | |
| 49 | +| [Nora Pharma](nora_pharma.md) | 9 | 100 % | 89 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 50 | +| [Lindt & Sprüngli Canada](lindt_sprunglicanada.md) | 9 | 0 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 51 | +| [Luqia (INO)](ino_ca.md) | 7 | 0 % | 100 % | 0 % | 2026-08-22 21:15 | ✅ | | |
| 52 | +| [Alphanumeric Systems](alphanumeric_systems.md) | 5 | 100 % | 100 % | 40 % | 2026-08-22 20:59 | ✅ | | |
| 53 | +| [VOXDATA](voxdata.md) | 5 | 100 % | 100 % | 100 % | 2026-08-22 21:30 | ✅ | | |
| 54 | +| [Turbulent](turbulent.md) | 3 | 0 % | 100 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 55 | +| [Vaporus](vaporus_inc.md) | 2 | 100 % | 50 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 56 | +| [Black & McDonald](black_mcdonald_francais.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:00 | ✅ | | |
| 57 | +| [Sense Ingénierie](sense_engineering.md) | 2 | 0 % | 100 % | 100 % | 2026-08-22 21:24 | ✅ | | |
| 58 | +| [Canada Global Recruitment](canada_global.md) | 1 | 0 % | 0 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 59 | +| [YouSet](youset.md) | 1 | 0 % | 100 % | 100 % | 2026-08-22 21:32 | ✅ | | |
| 60 | +| [Panda7](panda7.md) | 1 | 100 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 61 | +| [TELUS Santé — Cliniques](telus_health_7fe6b0fe8614.md) | 1 | 100 % | 0 % | 0 % | 2026-08-22 21:29 | ✅ | | |
| 54 | 62 | |
| 55 | 63 | ## Licence / conformité |
| 56 | 64 | |
modified
docs/connecteurs/ats-custom.md
+2 −2
@@ -5,7 +5,7 @@ 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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -28,7 +28,7 @@ Généré : 2026-08-19 05:40 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 | 0 % | 0 % | 0 % | 2026-08-19 04:49 | ✅ | | |
| 31 | +| [Industries Lassonde](lassonde.md) | 31 | 32 % | 87 % | 10 % | 2026-08-22 21:21 | ✅ | | |
| 32 | 32 | |
| 33 | 33 | ## Licence / conformité |
| 34 | 34 | |
added
docs/connecteurs/ats-dayforce.md
+93 −0
@@ -0,0 +1,93 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/ats-dayforce.md | |
| 7 | +Rôle : Fiche plateforme ATS dayforce — mécanique partagée + tableau des 26 tenants | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Plateforme ATS `dayforce` | |
| 14 | + | |
| 15 | +**26 employeurs connectés** via cette plateforme — **677 offres actives**. Module partagé : `jobka/connectors/dayforce.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 16 | + | |
| 17 | +## Description & mécanique | |
| 18 | + | |
| 19 | +> Plateforme Dayforce HCM (ex-Ceridian) — jobs.dayforcehcm.com. | |
| 20 | +> | |
| 21 | +> API JSON publique du frontal (celle que le navigateur appelle) : | |
| 22 | +> - jeton : GET /api/auth/csrf -> {csrfToken} (+ cookie de session next-auth) ; | |
| 23 | +> toute requête POST doit porter l'en-tête X-CSRF-TOKEN, sinon 403. | |
| 24 | +> - liste : POST /api/geo/<NS>/jobposting/search | |
| 25 | +> body {clientNamespace, jobBoardCode, cultureCode, | |
| 26 | +> paginationStart} (pages FIXES de 25, champ découvert dans le | |
| 27 | +> chunk Next.js : paginationStart=(page-1)*25) | |
| 28 | +> -> {jobPostings:[{jobPostingId, jobTitle, jobDescription (HTML | |
| 29 | +> COMPLET dès la liste), jobBoardId, postingStartTimestampUTC, | |
| 30 | +> postingExpiryTimestampUTC, isEvergreen, | |
| 31 | +> postingLocations:[{formattedAddress, isoCountryCode, stateCode, | |
| 32 | +> cityName, coordinates "lat:…;lng:…"}]}], maxCount} | |
| 33 | +> - détail : GET /api/geo/<NS>/jobposting/<NS>/<culture>/<jobBoardId>/<id> | |
| 34 | +> -> jobPostingAttributes [{name: "PayType"/"PayClass", value}] + | |
| 35 | +> jobPostingContent (header/description/footer). Visité avec cache BD | |
| 36 | +> + budget par cycle (n'apporte que les attributs type/paie). | |
| 37 | +> | |
| 38 | +> cultureCode « fr-CA » : Dayforce sert la traduction française quand elle | |
| 39 | +> existe (public québécois), sinon le texte original. | |
| 40 | + | |
| 41 | +## Accès | |
| 42 | + | |
| 43 | +- **Endpoint** (`BASE`) : `https://jobs.dayforcehcm.com` | |
| 44 | +- **Pagination** : flux unique (une requête liste) | |
| 45 | +- **Backend** : GET/POST direct `requests` (throttlé, User-Agent `JobKaBot/1.0` identifié) | |
| 46 | +- **Auth** : aucune — API/pages publiques du site carrières. | |
| 47 | +- **Throttle** : 0.8 s entre requêtes. | |
| 48 | +- **Budgets (env)** : `JOBKA_DAYFORCE_DETAIL_LIMIT` (défaut `80`) | |
| 49 | + | |
| 50 | +## Tenants connectés | |
| 51 | + | |
| 52 | +| Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | | |
| 53 | +|---|---|---|---|---|---|---| | |
| 54 | +| [La Vie en Rose](lavieenrose.md) | 138 | 4 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 55 | +| [Le Groupe Maurice](groupemaurice.md) | 99 | 0 % | 100 % | 0 % | 2026-08-22 21:12 | ✅ | | |
| 56 | +| [Gray Collection (Groupe Antonopoulos)](graycollection.md) | 71 | 0 % | 100 % | 0 % | 2026-08-22 21:12 | ✅ | | |
| 57 | +| [BPA (Experts-conseils)](bpa.md) | 51 | 0 % | 100 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 58 | +| [Laura Canada](lauracanada.md) | 50 | 0 % | 100 % | 0 % | 2026-08-22 21:21 | ✅ | | |
| 59 | +| [JD Sports Canada](jdsports.md) | 47 | 0 % | 100 % | 2 % | 2026-08-22 21:15 | ✅ | | |
| 60 | +| [Camions Excellence Peterbilt](excellencepeterbilt.md) | 40 | 0 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 61 | +| [Groupe CH (Canadiens de Montréal, Centre Bell)](groupech.md) | 30 | 0 % | 100 % | 0 % | 2026-08-22 21:12 | ✅ | | |
| 62 | +| [Soprema](soprema.md) | 28 | 39 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 63 | +| [Groupe AGF](groupeagf.md) | 15 | 53 % | 100 % | 20 % | 2026-08-22 21:12 | ✅ | | |
| 64 | +| [VinFast Canada](vinfastcanada.md) | 15 | 33 % | 100 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 65 | +| [Fastco Canada](fastcocanada.md) | 14 | 0 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 66 | +| [United Services Group](unitedservices.md) | 14 | 0 % | 100 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 67 | +| [Running Room Canada](runningroom.md) | 12 | 0 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 68 | +| [Groupe Mach](groupemach.md) | 10 | 0 % | 100 % | 0 % | 2026-08-22 21:12 | ✅ | | |
| 69 | +| [Nationex](nationex.md) | 10 | 0 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 70 | +| [Administration portuaire de Québec](portquebec.md) | 6 | 0 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 71 | +| [Air Canada Rouge](acadierouge.md) | 5 | 20 % | 100 % | 0 % | 2026-08-22 20:56 | ✅ | | |
| 72 | +| [Realstar](realstar.md) | 5 | 0 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 73 | +| [Dare Foods](darefoods.md) | 4 | 75 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 74 | +| [East Penn Canada](eastpenn.md) | 3 | 0 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 75 | +| [Reflector Entertainment](reflector.md) | 3 | 0 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 76 | +| [Eidos-Montréal](eidosmontreal.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 77 | +| [Spectra Premium](spectrapremium.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 78 | +| [StorageMart](storagemart.md) | 2 | 100 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 79 | +| [BLEUFEU (Festival d'été de Québec)](bleufeu.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:00 | ✅ | | |
| 80 | + | |
| 81 | +## Licence / conformité | |
| 82 | + | |
| 83 | +**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 l'employeur » 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. | |
| 84 | + | |
| 85 | +## Historique | |
| 86 | + | |
| 87 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 88 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 89 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 90 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 91 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 92 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 93 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/ats-digitalrecruiters.md
+4 −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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 — **68 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 — **73 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-19 05:40 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) | 41 | 98 % | 68 % | 0 % | 2026-08-19 04:17 | ✅ | | |
| 40 | −| [CSS des Découvreurs](cssdd.md) | 27 | 78 % | 0 % | 0 % | 2026-08-19 05:09 | ✅ | | |
| 39 | +| [Santé Québec](sante_quebec.md) | 46 | 98 % | 63 % | 0 % | 2026-08-22 21:24 | ✅ | | |
| 40 | +| [CSS des Découvreurs](cssdd.md) | 27 | 81 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 41 | 41 | |
| 42 | 42 | ## Licence / conformité |
| 43 | 43 | |
modified
docs/connecteurs/ats-greenhouse.md
+39 −22
@@ -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-greenhouse.md |
| 7 | −Rôle : Fiche plateforme ATS greenhouse — mécanique partagée + tableau des 19 tenants | |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 7 | +Rôle : Fiche plateforme ATS greenhouse — mécanique partagée + tableau des 36 tenants | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**19 employeurs connectés** via cette plateforme — **192 offres actives**. Module partagé : `jobka/connectors/greenhouse.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**36 employeurs connectés** via cette plateforme — **366 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,25 +37,42 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 37 | 37 | |
| 38 | 38 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | |
| 39 | 39 | |---|---|---|---|---|---|---| |
| 40 | −| [Levio](levio.md) | 42 | 0 % | 100 % | 0 % | 2026-08-19 04:10 | ✅ | | |
| 41 | −| [AppDirect](appdirect.md) | 24 | 25 % | 100 % | 0 % | 2026-08-19 03:36 | ✅ | | |
| 42 | −| [mthree](mthreerecruitingportal.md) | 22 | 0 % | 100 % | 23 % | 2026-08-19 04:15 | ✅ | | |
| 43 | −| [Vooban](vooban.md) | 18 | 0 % | 100 % | 0 % | 2026-08-19 04:25 | ✅ | | |
| 44 | −| [Valtech](valtech.md) | 15 | 13 % | 100 % | 0 % | 2026-08-19 04:25 | ✅ | | |
| 45 | −| [Sid Lee](sidlee.md) | 13 | 0 % | 100 % | 0 % | 2026-08-19 04:18 | ✅ | | |
| 46 | −| [AlayaCare](alayacare.md) | 9 | 0 % | 100 % | 0 % | 2026-08-19 03:36 | ✅ | | |
| 47 | −| [SIA Innovations](siainnovationsinc.md) | 9 | 44 % | 100 % | 78 % | 2026-08-19 04:18 | ✅ | | |
| 48 | −| [GURUS Solutions](gurussolutions.md) | 8 | 0 % | 100 % | 0 % | 2026-08-19 04:02 | ✅ | | |
| 49 | −| [Lush Cosmétiques](lush.md) | 5 | 100 % | 100 % | 0 % | 2026-08-19 04:10 | ✅ | | |
| 50 | −| [Poka](poka.md) | 5 | 0 % | 100 % | 0 % | 2026-08-19 04:16 | ✅ | | |
| 51 | −| [TandemLaunch](tandemlaunch.md) | 5 | 0 % | 100 % | 0 % | 2026-08-19 04:19 | ✅ | | |
| 52 | −| [Broadsign](broadsign.md) | 4 | 0 % | 100 % | 100 % | 2026-08-19 03:41 | ✅ | | |
| 53 | −| [Vaco](vaco.md) | 4 | 75 % | 100 % | 0 % | 2026-08-19 04:24 | ✅ | | |
| 54 | −| [Gearbox Studio Québec](gearboxquebec.md) | 3 | 0 % | 100 % | 0 % | 2026-08-19 03:56 | ✅ | | |
| 55 | −| [On Running](onrunning.md) | 2 | 0 % | 100 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 56 | −| [VML Canada](vmlcanadaen.md) | 2 | 50 % | 100 % | 0 % | 2026-08-19 04:25 | ✅ | | |
| 57 | −| [NATIONAL](national.md) | 1 | 0 % | 100 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 58 | −| [Samsara](samsara.md) | 1 | 100 % | 100 % | 100 % | 2026-08-19 04:17 | ✅ | | |
| 40 | +| [Levio](levio.md) | 42 | 0 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 41 | +| [Laporte Experts Conseils](laportefr.md) | 34 | 0 % | 100 % | 0 % | 2026-08-22 21:21 | ✅ | | |
| 42 | +| [Coveo](coveofr.md) | 29 | 0 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 43 | +| [AppDirect](appdirect.md) | 24 | 42 % | 100 % | 0 % | 2026-08-22 20:59 | ✅ | | |
| 44 | +| [mthree](mthreerecruitingportal.md) | 23 | 0 % | 100 % | 22 % | 2026-08-22 21:22 | ✅ | | |
| 45 | +| [Vooban](vooban.md) | 19 | 0 % | 100 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 46 | +| [La Senza](lasenza.md) | 17 | 12 % | 100 % | 0 % | 2026-08-22 21:21 | ✅ | | |
| 47 | +| [Sony Pictures Imageworks](sonypicturesimageworks.md) | 16 | 31 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 48 | +| [Sid Lee](sidlee.md) | 13 | 0 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 49 | +| [Cloud Chamber Montréal](cloudchamberfr.md) | 13 | 0 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 50 | +| [Valtech](valtech.md) | 12 | 17 % | 100 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 51 | +| [LoiZéro](loizero.md) | 12 | 0 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 52 | +| [Royal Vet](royalvet.md) | 10 | 0 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 53 | +| [AlayaCare](alayacare.md) | 9 | 0 % | 100 % | 0 % | 2026-08-22 20:58 | ✅ | | |
| 54 | +| [SIA Innovations](siainnovationsinc.md) | 9 | 44 % | 100 % | 78 % | 2026-08-22 21:25 | ✅ | | |
| 55 | +| [Alo Yoga](aloyoga.md) | 9 | 0 % | 78 % | 0 % | 2026-08-22 20:59 | ✅ | | |
| 56 | +| [GURUS Solutions](gurussolutions.md) | 8 | 0 % | 100 % | 0 % | 2026-08-22 21:14 | ✅ | | |
| 57 | +| [Lyft](lyft.md) | 8 | 100 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 58 | +| [Toboggan Labs](tobogganlabs.md) | 8 | 0 % | 100 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 59 | +| [Mejuri](mejuri.md) | 7 | 71 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 60 | +| [Keel Infrastructure](keelinfrastructure.md) | 6 | 0 % | 100 % | 0 % | 2026-08-22 21:21 | ✅ | | |
| 61 | +| [Lush Cosmétiques](lush.md) | 5 | 100 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 62 | +| [Broadsign](broadsign.md) | 4 | 0 % | 100 % | 100 % | 2026-08-22 21:04 | ✅ | | |
| 63 | +| [TandemLaunch](tandemlaunch.md) | 4 | 0 % | 100 % | 0 % | 2026-08-22 21:26 | ✅ | | |
| 64 | +| [Vaco](vaco.md) | 4 | 75 % | 100 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 65 | +| [Gearbox Studio Québec](gearboxquebec.md) | 3 | 0 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 66 | +| [Poka](poka.md) | 3 | 0 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 67 | +| [On Running](onrunning.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 68 | +| [VML Canada](vmlcanadaen.md) | 2 | 50 % | 100 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 69 | +| [AutoTrader Canada](autotradercanada.md) | 2 | 100 % | 100 % | 0 % | 2026-08-22 20:59 | ✅ | | |
| 70 | +| [Latys Intelligence](latys.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:21 | ✅ | | |
| 71 | +| [KRAFTON Montréal Studio](studiokraftonboard.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 72 | +| [Terrestar Solutions](terrestarsolutionsfr.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:29 | ✅ | | |
| 73 | +| [NATIONAL](national.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 74 | +| [Samsara](samsara.md) | 1 | 100 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 75 | +| [Club Monaco](clubmonaco.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 59 | 76 | |
| 60 | 77 | ## Licence / conformité |
| 61 | 78 | |
modified
docs/connecteurs/ats-icims.md
+8 −8
@@ -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 6 tenants |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**6 employeurs connectés** via cette plateforme — **60 offres actives**. Module partagé : `jobka/connectors/icims.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**6 employeurs connectés** via cette plateforme — **61 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,12 +39,12 @@ Généré : 2026-08-19 05:40 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-19 04:11 | ✅ | | |
| 43 | −| [CAPREIT](capreit.md) | 10 | 0 % | 100 % | 0 % | 2026-08-19 03:42 | ✅ | | |
| 44 | −| [EDF Renouvelables Canada](edf_renouvelables.md) | 9 | 78 % | 67 % | 67 % | 2026-08-19 03:55 | ✅ | | |
| 45 | −| [Omni Hôtel Mont-Royal](omni_hotels_gestion.md) | 8 | 88 % | 100 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 46 | −| [Omni Hôtel Mont-Royal](omni_hotels_horaire.md) | 8 | 88 % | 100 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 47 | −| [Placements Mackenzie (Power/IGM)](mackenzie.md) | 3 | 100 % | 0 % | 0 % | 2026-08-19 04:49 | ✅ | | |
| 42 | +| [McCarthy Tétrault](mccarthy_tetrault.md) | 22 | 0 % | 100 % | 9 % | 2026-08-22 21:22 | ✅ | | |
| 43 | +| [CAPREIT](capreit.md) | 10 | 0 % | 100 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 44 | +| [EDF Renouvelables Canada](edf_renouvelables.md) | 9 | 78 % | 67 % | 67 % | 2026-08-22 21:11 | ✅ | | |
| 45 | +| [Omni Hôtel Mont-Royal](omni_hotels_gestion.md) | 8 | 88 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 46 | +| [Omni Hôtel Mont-Royal](omni_hotels_horaire.md) | 8 | 88 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 47 | +| [Placements Mackenzie (Power/IGM)](mackenzie.md) | 4 | 100 % | 75 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 48 | 48 | |
| 49 | 49 | ## Licence / conformité |
| 50 | 50 | |
modified
docs/connecteurs/ats-lever.md
+28 −22
@@ -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-lever.md |
| 7 | −Rôle : Fiche plateforme ATS lever — mécanique partagée + tableau des 19 tenants | |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 7 | +Rôle : Fiche plateforme ATS lever — mécanique partagée + tableau des 25 tenants | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**19 employeurs connectés** via cette plateforme — **454 offres actives**. Module partagé : `jobka/connectors/lever.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**25 employeurs connectés** via cette plateforme — **505 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,25 +37,31 @@ Généré : 2026-08-19 05:40 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) | 266 | 18 % | 98 % | 98 % | 2026-08-19 03:56 | ✅ | | |
| 41 | −| [Behaviour Interactif](bhvr.md) | 39 | 0 % | 100 % | 100 % | 2026-08-19 03:39 | ✅ | | |
| 42 | −| [Cirque du Soleil](cirquedusoleil.md) | 22 | 0 % | 86 % | 100 % | 2026-08-19 03:51 | ✅ | | |
| 43 | −| [Xsolla](xsolla.md) | 21 | 95 % | 95 % | 100 % | 2026-08-19 04:35 | ✅ | | |
| 44 | −| [OSEDEA](osedea.md) | 18 | 0 % | 100 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 45 | −| [VO2 Group](vo2_group.md) | 17 | 6 % | 100 % | 100 % | 2026-08-19 04:25 | ✅ | | |
| 46 | −| [Spiria](spiria.md) | 12 | 58 % | 100 % | 100 % | 2026-08-19 04:18 | ✅ | | |
| 47 | −| [Mirego](mirego.md) | 11 | 0 % | 100 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 48 | −| [TSMG](tsmg.md) | 11 | 0 % | 100 % | 100 % | 2026-08-19 04:24 | ✅ | | |
| 49 | −| [EQ Bank](eqbank.md) | 6 | 50 % | 50 % | 100 % | 2026-08-19 03:55 | ✅ | | |
| 50 | −| [US Mobile](usmobile.md) | 6 | 100 % | 100 % | 100 % | 2026-08-19 04:24 | ✅ | | |
| 51 | −| [Aviya Aerospace Systems](aviyatech.md) | 5 | 0 % | 100 % | 100 % | 2026-08-19 03:37 | ✅ | | |
| 52 | −| [Distro](distro.md) | 5 | 100 % | 100 % | 100 % | 2026-08-19 03:55 | ✅ | | |
| 53 | −| [DiliTrust](dilitrust.md) | 3 | 0 % | 100 % | 100 % | 2026-08-19 03:55 | ✅ | | |
| 54 | −| [Dulcedo Management](dulcedo.md) | 3 | 33 % | 67 % | 100 % | 2026-08-19 03:55 | ✅ | | |
| 55 | −| [Mistplay](mistplay.md) | 3 | 33 % | 100 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 56 | −| [Alimentiv](alimentiv_2.md) | 2 | 100 % | 50 % | 100 % | 2026-08-19 03:36 | ✅ | | |
| 57 | −| [Potloc](potloc.md) | 2 | 0 % | 100 % | 100 % | 2026-08-19 04:16 | ✅ | | |
| 58 | −| [Spreedly](spreedly.md) | 2 | 0 % | 100 % | 100 % | 2026-08-19 04:18 | ✅ | | |
| 40 | +| [Go RH](gorh.md) | 271 | 18 % | 98 % | 99 % | 2026-08-22 21:11 | ✅ | | |
| 41 | +| [Behaviour Interactif](bhvr.md) | 38 | 0 % | 100 % | 100 % | 2026-08-22 21:00 | ✅ | | |
| 42 | +| [Cirque du Soleil](cirquedusoleil.md) | 24 | 0 % | 88 % | 100 % | 2026-08-22 21:07 | ✅ | | |
| 43 | +| [OSEDEA](osedea.md) | 24 | 0 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 44 | +| [Xsolla](xsolla.md) | 21 | 95 % | 95 % | 100 % | 2026-08-22 21:32 | ✅ | | |
| 45 | +| [VO2 Group](vo2_group.md) | 17 | 6 % | 100 % | 100 % | 2026-08-22 21:30 | ✅ | | |
| 46 | +| [Spiria](spiria.md) | 12 | 58 % | 100 % | 100 % | 2026-08-22 21:25 | ✅ | | |
| 47 | +| [TSMG](tsmg.md) | 11 | 0 % | 100 % | 100 % | 2026-08-22 21:30 | ✅ | | |
| 48 | +| [Mirego](mirego.md) | 10 | 0 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 49 | +| [Telesat](telesat.md) | 10 | 0 % | 100 % | 100 % | 2026-08-22 21:29 | ✅ | | |
| 50 | +| [Distro](distro.md) | 7 | 100 % | 100 % | 100 % | 2026-08-22 21:09 | ✅ | | |
| 51 | +| [US Mobile](usmobile.md) | 7 | 100 % | 100 % | 100 % | 2026-08-22 21:30 | ✅ | | |
| 52 | +| [EQ Bank](eqbank.md) | 6 | 50 % | 50 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 53 | +| [Daniels Health Canada](daniels_sharpsmart.md) | 6 | 17 % | 33 % | 100 % | 2026-08-22 21:08 | ✅ | | |
| 54 | +| [LRDG (Language Research Development Group)](lrdgonline.md) | 6 | 100 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 55 | +| [Maquette Virtuelle](maquettevirtuelle.md) | 6 | 0 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 56 | +| [Aviya Aerospace Systems](aviyatech.md) | 5 | 0 % | 100 % | 100 % | 2026-08-22 20:59 | ✅ | | |
| 57 | +| [Alimentiv](alimentiv_2.md) | 4 | 100 % | 25 % | 100 % | 2026-08-22 20:58 | ✅ | | |
| 58 | +| [Ecosystem Énergie](ecosystem.md) | 4 | 0 % | 100 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 59 | +| [DiliTrust](dilitrust.md) | 3 | 0 % | 100 % | 100 % | 2026-08-22 21:09 | ✅ | | |
| 60 | +| [Dulcedo Management](dulcedo.md) | 3 | 33 % | 67 % | 100 % | 2026-08-22 21:10 | ✅ | | |
| 61 | +| [Mistplay](mistplay.md) | 3 | 33 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 62 | +| [Cologix](cologix.md) | 3 | 33 % | 100 % | 100 % | 2026-08-22 21:08 | ✅ | | |
| 63 | +| [Potloc](potloc.md) | 2 | 0 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 64 | +| [Spreedly](spreedly.md) | 2 | 0 % | 100 % | 100 % | 2026-08-22 21:25 | ✅ | | |
| 59 | 65 | |
| 60 | 66 | ## Licence / conformité |
| 61 | 67 | |
modified
docs/connecteurs/ats-njoyn.md
+9 −8
@@ -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 6 tenants |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**6 employeurs connectés** via cette plateforme — **956 offres actives**. Module partagé : `jobka/connectors/njoyn.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**6 employeurs connectés** via cette plateforme — **1148 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 | |
@@ -42,12 +42,12 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 42 | 42 | |
| 43 | 43 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | |
| 44 | 44 | |---|---|---|---|---|---|---| |
| 45 | −| [Santé Québec — Montréal](sante_montreal.md) | 762 | 97 % | 8 % | 1 % | 2026-08-19 05:30 | ✅ | | |
| 46 | −| [CGI](cgi.md) | 127 | 0 % | 0 % | 0 % | 2026-08-19 05:11 | ✅ | | |
| 47 | −| [Réseau de transport de la Capitale](rtc_quebec.md) | 18 | 0 % | 0 % | 0 % | 2026-08-19 04:17 | ✅ | | |
| 48 | −| [Ville de Gatineau](ville_gatineau.md) | 17 | 94 % | 0 % | 0 % | 2026-08-19 04:25 | ✅ | | |
| 49 | −| [Société de transport de Laval](stl_laval.md) | 16 | 31 % | 0 % | 0 % | 2026-08-19 04:18 | ✅ | | |
| 50 | −| [Ville de Terrebonne](ville_terrebonne.md) | 16 | 94 % | 0 % | 0 % | 2026-08-19 04:25 | ✅ | | |
| 45 | +| [Santé Québec — Montréal](sante_montreal.md) | 764 | 97 % | 98 % | 1 % | 2026-08-22 21:24 | ✅ | | |
| 46 | +| [CGI](cgi.md) | 316 | 0 % | 95 % | 0 % | 2026-08-22 21:06 | ✅ | | |
| 47 | +| [Réseau de transport de la Capitale](rtc_quebec.md) | 18 | 0 % | 0 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 48 | +| [Ville de Gatineau](ville_gatineau.md) | 18 | 94 % | 0 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 49 | +| [Société de transport de Laval](stl_laval.md) | 17 | 29 % | 0 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 50 | +| [Ville de Terrebonne](ville_terrebonne.md) | 15 | 93 % | 0 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 51 | 51 | |
| 52 | 52 | ## Licence / conformité |
| 53 | 53 | |
@@ -67,6 +67,7 @@ Certains domaines de cette plateforme sont servis derrière un gestionnaire anti | ||
| 67 | 67 | |
| 68 | 68 | Commits touchant `jobka/connectors/njoyn.py` : |
| 69 | 69 | |
| 70 | +- `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). | |
| 70 | 71 | - `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 % ». |
| 71 | 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) |
| 72 | 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-recruitee.md
+21 −14
@@ -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-recruitee.md |
| 7 | −Rôle : Fiche plateforme ATS recruitee — mécanique partagée + tableau des 11 tenants | |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 7 | +Rôle : Fiche plateforme ATS recruitee — mécanique partagée + tableau des 18 tenants | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**11 employeurs connectés** via cette plateforme — **130 offres actives**. Module partagé : `jobka/connectors/recruitee.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**18 employeurs connectés** via cette plateforme — **224 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,17 +38,24 @@ Généré : 2026-08-19 05:40 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) | 59 | 10 % | 100 % | 100 % | 2026-08-19 03:36 | ✅ | | |
| 42 | −| [Huawei Canada](huaweicanada.md) | 18 | 0 % | 100 % | 100 % | 2026-08-19 04:02 | ✅ | | |
| 43 | −| [LG2](lg2.md) | 14 | 7 % | 100 % | 100 % | 2026-08-19 04:10 | ✅ | | |
| 44 | −| [Framestore](framestore.md) | 9 | 0 % | 100 % | 100 % | 2026-08-19 03:56 | ✅ | | |
| 45 | −| [AJ Walter Aviation](ajwalter.md) | 7 | 0 % | 100 % | 100 % | 2026-08-19 03:36 | ✅ | | |
| 46 | −| [Petal](petalmd.md) | 7 | 14 % | 100 % | 100 % | 2026-08-19 04:16 | ✅ | | |
| 47 | −| [Adèle Express](adeleexpressfr.md) | 5 | 60 % | 100 % | 100 % | 2026-08-19 03:31 | ✅ | | |
| 48 | −| [Médialo](medialo.md) | 5 | 0 % | 80 % | 100 % | 2026-08-19 04:15 | ✅ | | |
| 49 | −| [Squeeze Studio Animation](squeezestudio.md) | 3 | 0 % | 67 % | 100 % | 2026-08-19 04:18 | ✅ | | |
| 50 | −| [BIXI Montréal](biximontreal.md) | 2 | 50 % | 100 % | 100 % | 2026-08-19 03:39 | ✅ | | |
| 51 | −| [Amilia](amilia.md) | 1 | 0 % | 0 % | 100 % | 2026-08-19 03:36 | ✅ | | |
| 41 | +| [ANCIA Personnel](anciapersonnelinc.md) | 60 | 10 % | 100 % | 100 % | 2026-08-22 20:59 | ✅ | | |
| 42 | +| [Eurofins EnvironeX](eurofinsenvironex.md) | 47 | 0 % | 100 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 43 | +| [Huawei Canada](huaweicanada.md) | 23 | 0 % | 100 % | 100 % | 2026-08-22 21:15 | ✅ | | |
| 44 | +| [LG2](lg2.md) | 15 | 7 % | 100 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 45 | +| [Teknion Roy & Breton](teknionroybreton.md) | 15 | 53 % | 93 % | 100 % | 2026-08-22 21:29 | ✅ | | |
| 46 | +| [Framestore](framestore.md) | 10 | 0 % | 100 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 47 | +| [Avantage Plus](avantageplus.md) | 10 | 10 % | 100 % | 100 % | 2026-08-22 20:59 | ✅ | | |
| 48 | +| [AJ Walter Aviation](ajwalter.md) | 8 | 0 % | 100 % | 100 % | 2026-08-22 20:58 | ✅ | | |
| 49 | +| [Petal](petalmd.md) | 6 | 0 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 50 | +| [STAS](stasinc.md) | 6 | 0 % | 100 % | 100 % | 2026-08-22 21:25 | ✅ | | |
| 51 | +| [Adèle Express](adeleexpressfr.md) | 5 | 60 % | 100 % | 100 % | 2026-08-22 20:56 | ✅ | | |
| 52 | +| [Médialo](medialo.md) | 5 | 0 % | 80 % | 100 % | 2026-08-22 21:22 | ✅ | | |
| 53 | +| [Agile DSS](agiledss.md) | 4 | 0 % | 100 % | 100 % | 2026-08-22 20:56 | ✅ | | |
| 54 | +| [Pivot + Edge](pivotandedge.md) | 4 | 0 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 55 | +| [Squeeze Studio Animation](squeezestudio.md) | 3 | 0 % | 67 % | 100 % | 2026-08-22 21:25 | ✅ | | |
| 56 | +| [BIXI Montréal](biximontreal.md) | 2 | 50 % | 100 % | 100 % | 2026-08-22 21:00 | ✅ | | |
| 57 | +| [Amilia](amilia.md) | 1 | 0 % | 0 % | 100 % | 2026-08-22 20:59 | ✅ | | |
| 58 | +| [Projevia](projevia.md) | 0 | — | — | — | 2026-08-22 21:23 | ✅ | | |
| 52 | 59 | |
| 53 | 60 | ## Licence / conformité |
| 54 | 61 | |
modified
docs/connecteurs/ats-smartrecruiters.md
+44 −31
@@ -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-smartrecruiters.md |
| 7 | −Rôle : Fiche plateforme ATS smartrecruiters — mécanique partagée + tableau des 28 tenants | |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 7 | +Rôle : Fiche plateforme ATS smartrecruiters — mécanique partagée + tableau des 41 tenants | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**28 employeurs connectés** via cette plateforme — **949 offres actives**. Module partagé : `jobka/connectors/smartrecruiters.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**41 employeurs connectés** via cette plateforme — **1456 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,34 +41,47 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 41 | 41 | |
| 42 | 42 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | |
| 43 | 43 | |---|---|---|---|---|---|---| |
| 44 | −| [CIMA+](cima2.md) | 221 | 0 % | 100 % | 84 % | 2026-08-19 03:44 | ✅ | | |
| 45 | −| [Reitmans](reitmanscanadalteltd.md) | 138 | 22 % | 100 % | 29 % | 2026-08-19 04:16 | ✅ | | |
| 46 | −| [Ubisoft](ubisoft.md) | 123 | 0 % | 100 % | 2 % | 2026-08-19 04:24 | ✅ | | |
| 47 | −| [Vidéotron](videotron.md) | 80 | 14 % | 100 % | 40 % | 2026-08-19 04:25 | ✅ | | |
| 48 | −| [EMCO](emcocorporation.md) | 67 | 48 % | 100 % | 22 % | 2026-08-19 03:55 | ✅ | | |
| 49 | −| [Groupe Canam](groupecanam.md) | 65 | 66 % | 98 % | 26 % | 2026-08-19 03:56 | ✅ | | |
| 50 | −| [Techo-Bloc](techo_bloc.md) | 40 | 50 % | 100 % | 20 % | 2026-08-19 04:24 | ✅ | | |
| 51 | −| [QSL](qsl.md) | 37 | 38 % | 100 % | 0 % | 2026-08-19 04:16 | ✅ | | |
| 52 | −| [Transat A.T.](transatat1.md) | 36 | 6 % | 100 % | 56 % | 2026-08-19 04:24 | ✅ | | |
| 53 | −| [MEDFAR Solutions Cliniques](medfar.md) | 23 | 0 % | 100 % | 96 % | 2026-08-19 04:15 | ✅ | | |
| 54 | −| [Rodeo FX](rodeofx.md) | 20 | 0 % | 100 % | 10 % | 2026-08-19 04:17 | ✅ | | |
| 55 | −| [Vosker](vosker.md) | 19 | 0 % | 100 % | 89 % | 2026-08-19 04:25 | ✅ | | |
| 56 | −| [Gameloft](gameloft.md) | 14 | 0 % | 100 % | 71 % | 2026-08-19 03:56 | ✅ | | |
| 57 | −| [Talan](talan.md) | 13 | 0 % | 100 % | 85 % | 2026-08-19 04:19 | ✅ | | |
| 58 | −| [People Can Fly](peoplecanfly.md) | 10 | 0 % | 100 % | 100 % | 2026-08-19 04:16 | ✅ | | |
| 59 | −| [J'Excelle](jexcelleinc.md) | 9 | 0 % | 100 % | 11 % | 2026-08-19 04:04 | ✅ | | |
| 60 | −| [CF Montréal](cfmontreal.md) | 8 | 0 % | 100 % | 0 % | 2026-08-19 03:42 | ✅ | | |
| 61 | −| [Mattel (Mega Bloks)](mattelinc.md) | 6 | 0 % | 100 % | 17 % | 2026-08-19 04:11 | ✅ | | |
| 62 | −| [Astucemedia](astucemedia.md) | 5 | 0 % | 100 % | 40 % | 2026-08-19 03:36 | ✅ | | |
| 63 | −| [HoYoverse](hoyoverse.md) | 4 | 0 % | 100 % | 100 % | 2026-08-19 04:02 | ✅ | | |
| 64 | −| [Playmind](playmind.md) | 2 | 0 % | 100 % | 0 % | 2026-08-19 04:16 | ✅ | | |
| 65 | −| [ServiceNow](servicenow.md) | 2 | 0 % | 100 % | 100 % | 2026-08-19 04:18 | ✅ | | |
| 66 | −| [Venture Media](venturemedia.md) | 2 | 100 % | 100 % | 50 % | 2026-08-19 04:25 | ✅ | | |
| 67 | −| [GoLogic](gologic.md) | 1 | 0 % | 100 % | 0 % | 2026-08-19 03:56 | ✅ | | |
| 68 | −| [Sparkgrid](sparkgrid.md) | 1 | 0 % | 100 % | 0 % | 2026-08-19 04:18 | ✅ | | |
| 69 | −| [Stelpro](stelpro.md) | 1 | 0 % | 100 % | 0 % | 2026-08-19 04:18 | ✅ | | |
| 70 | −| [Talsom](talsom.md) | 1 | 0 % | 100 % | 0 % | 2026-08-19 04:19 | ✅ | | |
| 71 | −| [Xplornet](xplornet.md) | 1 | 0 % | 100 % | 0 % | 2026-08-19 04:35 | ✅ | | |
| 44 | +| [CIMA+](cima2.md) | 239 | 0 % | 100 % | 85 % | 2026-08-22 21:06 | ✅ | | |
| 45 | +| [Reitmans](reitmanscanadalteltd.md) | 137 | 23 % | 100 % | 28 % | 2026-08-22 21:23 | ✅ | | |
| 46 | +| [Sodexo Canada](sodexocanadaltd.md) | 135 | 82 % | 100 % | 10 % | 2026-08-22 21:25 | ✅ | | |
| 47 | +| [Ubisoft](ubisoft.md) | 127 | 0 % | 100 % | 2 % | 2026-08-22 21:30 | ✅ | | |
| 48 | +| [Artelia Canada](artelia.md) | 115 | 0 % | 98 % | 24 % | 2026-08-22 20:59 | ✅ | | |
| 49 | +| [Linen Chest](linenchest.md) | 82 | 9 % | 100 % | 6 % | 2026-08-22 21:22 | ✅ | | |
| 50 | +| [Vidéotron](videotron.md) | 77 | 17 % | 100 % | 39 % | 2026-08-22 21:30 | ✅ | | |
| 51 | +| [Renaud-Bray](renaud_bray.md) | 71 | 1 % | 100 % | 1 % | 2026-08-22 21:23 | ✅ | | |
| 52 | +| [EMCO](emcocorporation.md) | 64 | 45 % | 100 % | 20 % | 2026-08-22 21:11 | ✅ | | |
| 53 | +| [Groupe Canam](groupecanam.md) | 64 | 66 % | 98 % | 27 % | 2026-08-22 21:12 | ✅ | | |
| 54 | +| [Techo-Bloc](techo_bloc.md) | 44 | 59 % | 100 % | 18 % | 2026-08-22 21:29 | ✅ | | |
| 55 | +| [Transat A.T.](transatat1.md) | 40 | 5 % | 100 % | 60 % | 2026-08-22 21:30 | ✅ | | |
| 56 | +| [QSL](qsl.md) | 32 | 22 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 57 | +| [H&M](hmgroup.md) | 32 | 3 % | 100 % | 0 % | 2026-08-22 21:15 | ✅ | | |
| 58 | +| [Structube](structube1.md) | 25 | 0 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 59 | +| [MEDFAR Solutions Cliniques](medfar.md) | 23 | 0 % | 100 % | 96 % | 2026-08-22 21:22 | ✅ | | |
| 60 | +| [Rodeo FX](rodeofx.md) | 20 | 0 % | 100 % | 10 % | 2026-08-22 21:23 | ✅ | | |
| 61 | +| [Vosker](vosker.md) | 18 | 0 % | 100 % | 89 % | 2026-08-22 21:30 | ✅ | | |
| 62 | +| [Gameloft](gameloft.md) | 13 | 0 % | 100 % | 77 % | 2026-08-22 21:11 | ✅ | | |
| 63 | +| [Talan](talan.md) | 13 | 0 % | 100 % | 85 % | 2026-08-22 21:26 | ✅ | | |
| 64 | +| [Lemay](lemay.md) | 12 | 8 % | 100 % | 67 % | 2026-08-22 21:22 | ✅ | | |
| 65 | +| [People Can Fly](peoplecanfly.md) | 11 | 0 % | 100 % | 100 % | 2026-08-22 21:23 | ✅ | | |
| 66 | +| [Sika Canada](sikaag.md) | 11 | 0 % | 100 % | 18 % | 2026-08-22 21:25 | ✅ | | |
| 67 | +| [J'Excelle](jexcelleinc.md) | 9 | 0 % | 100 % | 11 % | 2026-08-22 21:15 | ✅ | | |
| 68 | +| [CF Montréal](cfmontreal.md) | 8 | 0 % | 100 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 69 | +| [Astucemedia](astucemedia.md) | 5 | 0 % | 100 % | 40 % | 2026-08-22 20:59 | ✅ | | |
| 70 | +| [HoYoverse](hoyoverse.md) | 4 | 0 % | 100 % | 100 % | 2026-08-22 21:15 | ✅ | | |
| 71 | +| [Mattel (Mega Bloks)](mattelinc.md) | 4 | 0 % | 100 % | 25 % | 2026-08-22 21:22 | ✅ | | |
| 72 | +| [ServiceNow](servicenow.md) | 4 | 0 % | 100 % | 75 % | 2026-08-22 21:25 | ✅ | | |
| 73 | +| [GURU Boisson Énergisante](guruorganicenergydrink.md) | 3 | 0 % | 100 % | 33 % | 2026-08-22 21:14 | ✅ | | |
| 74 | +| [Playmind](playmind.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 75 | +| [Venture Media](venturemedia.md) | 2 | 100 % | 100 % | 50 % | 2026-08-22 21:30 | ✅ | | |
| 76 | +| [Trupanion](trupanion1.md) | 2 | 50 % | 100 % | 100 % | 2026-08-22 21:30 | ✅ | | |
| 77 | +| [GoLogic](gologic.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 78 | +| [Sparkgrid](sparkgrid.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 79 | +| [Stelpro](stelpro.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 80 | +| [Talsom](talsom.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:26 | ✅ | | |
| 81 | +| [Xplornet](xplornet.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:32 | ✅ | | |
| 82 | +| [California Closets](californiaclosets.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 83 | +| [Centre multiethnique de Québec](centremultiethniquedequbec.md) | 1 | 100 % | 100 % | 100 % | 2026-08-22 21:04 | ✅ | | |
| 84 | +| [École des entrepreneurs du Québec](coledesentrepreneursduqubec.md) | 1 | 0 % | 100 % | 100 % | 2026-08-22 21:08 | ✅ | | |
| 72 | 85 | |
| 73 | 86 | ## Licence / conformité |
| 74 | 87 | |
modified
docs/connecteurs/ats-successfactors.md
+7 −7
@@ -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 5 tenants |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**5 employeurs connectés** via cette plateforme — **1224 offres actives**. Module partagé : `jobka/connectors/successfactors.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**5 employeurs connectés** via cette plateforme — **1186 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,11 +38,11 @@ Généré : 2026-08-19 05:40 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) | 847 | 0 % | 100 % | 88 % | 2026-08-19 03:41 | ✅ | | |
| 42 | −| [Domtar](domtar.md) | 106 | 0 % | 99 % | 0 % | 2026-08-19 03:55 | ✅ | | |
| 43 | −| [Deloitte Canada](deloitte.md) | 105 | 96 % | 0 % | 98 % | 2026-08-19 04:48 | ✅ | | |
| 44 | −| [Cascades](cascades.md) | 100 | 77 % | 100 % | 12 % | 2026-08-19 03:42 | ✅ | | |
| 45 | −| [Hydro-Québec](hydroquebec.md) | 66 | 61 % | 0 % | 0 % | 2026-08-19 04:48 | ✅ | | |
| 41 | +| [Bombardier](bombardier.md) | 812 | 0 % | 100 % | 89 % | 2026-08-22 21:04 | ✅ | | |
| 42 | +| [Deloitte Canada](deloitte.md) | 105 | 96 % | 100 % | 98 % | 2026-08-22 21:08 | ✅ | | |
| 43 | +| [Domtar](domtar.md) | 102 | 0 % | 99 % | 0 % | 2026-08-22 21:10 | ✅ | | |
| 44 | +| [Cascades](cascades.md) | 100 | 75 % | 100 % | 14 % | 2026-08-22 21:04 | ✅ | | |
| 45 | +| [Hydro-Québec](hydroquebec.md) | 67 | 55 % | 81 % | 0 % | 2026-08-22 21:15 | ✅ | | |
| 46 | 46 | |
| 47 | 47 | ## Licence / conformité |
| 48 | 48 | |
modified
docs/connecteurs/ats-taleo.md
+6 −6
@@ -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 4 tenants |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**4 employeurs connectés** via cette plateforme — **71 offres actives**. Module partagé : `jobka/connectors/taleo.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**4 employeurs connectés** via cette plateforme — **83 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,10 +45,10 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 45 | 45 | |
| 46 | 46 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | |
| 47 | 47 | |---|---|---|---|---|---|---| |
| 48 | −| [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | 23 | 0 % | 100 % | 0 % | 2026-08-19 03:51 | ✅ | | |
| 49 | −| [Agnico Eagle Mines](agnico_eagle.md) | 20 | 0 % | 100 % | 0 % | 2026-08-19 03:31 | ✅ | | |
| 50 | −| [Bell Textron Canada](bell_textron.md) | 15 | 0 % | 100 % | 0 % | 2026-08-19 03:38 | ✅ | | |
| 51 | −| [Bayshore HealthCare](bayshore.md) | 13 | 0 % | 100 % | 0 % | 2026-08-19 03:38 | ✅ | | |
| 48 | +| [Agnico Eagle Mines](agnico_eagle.md) | 29 | 0 % | 100 % | 0 % | 2026-08-22 20:56 | ✅ | | |
| 49 | +| [CIUSSS de l'Est-de-l'Île-de-Montréal](ciusss_est_montreal.md) | 24 | 0 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 50 | +| [Bell Textron Canada](bell_textron.md) | 16 | 0 % | 100 % | 0 % | 2026-08-22 21:00 | ✅ | | |
| 51 | +| [Bayshore HealthCare](bayshore.md) | 14 | 0 % | 100 % | 0 % | 2026-08-22 21:00 | ✅ | | |
| 52 | 52 | |
| 53 | 53 | ## Licence / conformité |
| 54 | 54 | |
modified
docs/connecteurs/ats-taleo_tbe.md
+8 −8
@@ -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 6 tenants |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**6 employeurs connectés** via cette plateforme — **143 offres actives**. Module partagé : `jobka/connectors/taleo_tbe.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**6 employeurs connectés** via cette plateforme — **142 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,12 +46,12 @@ Généré : 2026-08-19 05:40 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) | 99 | 55 % | 0 % | 4 % | 2026-08-19 04:46 | ✅ | | |
| 50 | −| [exo (transport métropolitain)](exo.md) | 25 | 0 % | 0 % | 100 % | 2026-08-19 04:48 | ✅ | | |
| 51 | −| [HEC Montréal](hec_montreal.md) | 9 | 0 % | 0 % | 0 % | 2026-08-19 04:48 | ✅ | | |
| 52 | −| [HEC Montréal — corps professoral](hec_montreal_profs.md) | 9 | 0 % | 0 % | 0 % | 2026-08-19 04:48 | ✅ | | |
| 53 | −| [Produits Kruger](produits_kruger.md) | 1 | 0 % | 0 % | 0 % | 2026-08-19 04:48 | ✅ | | |
| 54 | −| [Kruger](kruger.md) | 0 | — | — | — | 2026-08-19 04:47 | ✅ | | |
| 49 | +| [Sépaq](sepaq.md) | 98 | 54 % | 8 % | 4 % | 2026-08-22 21:24 | ✅ | | |
| 50 | +| [exo (transport métropolitain)](exo.md) | 25 | 0 % | 100 % | 96 % | 2026-08-22 21:11 | ✅ | | |
| 51 | +| [HEC Montréal](hec_montreal.md) | 9 | 0 % | 100 % | 0 % | 2026-08-22 21:14 | ✅ | | |
| 52 | +| [HEC Montréal — corps professoral](hec_montreal_profs.md) | 9 | 0 % | 100 % | 0 % | 2026-08-22 21:14 | ✅ | | |
| 53 | +| [Produits Kruger](produits_kruger.md) | 1 | 0 % | 0 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 54 | +| [Kruger](kruger.md) | 0 | — | — | — | 2026-08-22 21:21 | ✅ | | |
| 55 | 55 | |
| 56 | 56 | ## Licence / conformité |
| 57 | 57 | |
modified
docs/connecteurs/ats-ultipro.md
+5 −5
@@ -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 3 tenants |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**3 employeurs connectés** via cette plateforme — **58 offres actives**. Module partagé : `jobka/connectors/ultipro.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**3 employeurs connectés** via cette plateforme — **60 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,9 +40,9 @@ Généré : 2026-08-19 05:40 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 | 62 % | 0 % | 4 % | 2026-08-19 04:49 | ✅ | | |
| 44 | −| [Messer Canada](messer_canada.md) | 22 | 91 % | 100 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 45 | −| [Fruit d'Or](fruitdor.md) | 12 | 0 % | 0 % | 0 % | 2026-08-19 04:48 | ✅ | | |
| 43 | +| [Messer Canada](messer_canada.md) | 23 | 87 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 44 | +| [Nortera](nortera.md) | 23 | 61 % | 100 % | 4 % | 2026-08-22 21:22 | ✅ | | |
| 45 | +| [Fruit d'Or](fruitdor.md) | 14 | 0 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 46 | 46 | |
| 47 | 47 | ## Licence / conformité |
| 48 | 48 | |
modified
docs/connecteurs/ats-workable.md
+33 −22
@@ -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-workable.md |
| 7 | −Rôle : Fiche plateforme ATS workable — mécanique partagée + tableau des 19 tenants | |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 7 | +Rôle : Fiche plateforme ATS workable — mécanique partagée + tableau des 30 tenants | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**19 employeurs connectés** via cette plateforme — **649 offres actives**. Module partagé : `jobka/connectors/workable.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**30 employeurs connectés** via cette plateforme — **735 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,25 +39,36 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 39 | 39 | |
| 40 | 40 | | Employeur | Actives | Salaire | GPS | Mode | Dernier sync | OK | |
| 41 | 41 | |---|---|---|---|---|---|---| |
| 42 | −| [TEHORA](tehora.md) | 346 | 0 % | 100 % | 32 % | 2026-08-19 04:24 | ✅ | | |
| 43 | −| [Genetec](genetec_inc.md) | 80 | 0 % | 100 % | 18 % | 2026-08-19 03:56 | ✅ | | |
| 44 | −| [SOGECLAIR](sogeclair.md) | 43 | 2 % | 100 % | 2 % | 2026-08-19 04:18 | ✅ | | |
| 45 | −| [Valsoft](valsoft_corp.md) | 37 | 11 % | 100 % | 16 % | 2026-08-19 04:25 | ✅ | | |
| 46 | −| [Side (PTW)](sideinc.md) | 33 | 0 % | 100 % | 21 % | 2026-08-19 04:18 | ✅ | | |
| 47 | −| [Tecsys](tecsys.md) | 27 | 0 % | 100 % | 93 % | 2026-08-19 04:24 | ✅ | | |
| 48 | −| [Evolving Web](evolving_web.md) | 14 | 0 % | 100 % | 14 % | 2026-08-19 03:55 | ✅ | | |
| 49 | −| [Lamour](lamour.md) | 11 | 0 % | 100 % | 0 % | 2026-08-19 04:10 | ✅ | | |
| 50 | −| [Eminent Valet](eminent_valet.md) | 9 | 100 % | 100 % | 0 % | 2026-08-19 03:55 | ✅ | | |
| 51 | −| [Botpress](botpress.md) | 8 | 0 % | 100 % | 0 % | 2026-08-19 03:41 | ✅ | | |
| 52 | −| [LIDD Consultants](lidd.md) | 8 | 0 % | 100 % | 0 % | 2026-08-19 04:10 | ✅ | | |
| 53 | −| [Mila — Institut québécois d'IA](mila_2.md) | 8 | 0 % | 100 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 54 | −| [Nuovo Photography](nuovophotography.md) | 8 | 25 % | 100 % | 0 % | 2026-08-19 04:15 | ✅ | | |
| 55 | −| [Sweat Pants Agency](sweat_pants_agency.md) | 6 | 50 % | 100 % | 100 % | 2026-08-19 04:19 | ✅ | | |
| 56 | −| [Bardel Entertainment](bardel_entertainment.md) | 3 | 100 % | 100 % | 0 % | 2026-08-19 03:37 | ✅ | | |
| 57 | −| [Flinks](flinks.md) | 3 | 100 % | 100 % | 100 % | 2026-08-19 03:56 | ✅ | | |
| 58 | −| [Unit8](unit8.md) | 3 | 0 % | 100 % | 67 % | 2026-08-19 04:24 | ✅ | | |
| 59 | −| [Atecna](atecna_montreal.md) | 1 | 0 % | 100 % | 0 % | 2026-08-19 03:36 | ✅ | | |
| 60 | −| [Charger Logistics](charger_logistics_inc.md) | 1 | 0 % | 100 % | 0 % | 2026-08-19 03:42 | ✅ | | |
| 42 | +| [TEHORA](tehora.md) | 346 | 0 % | 100 % | 32 % | 2026-08-22 21:29 | ✅ | | |
| 43 | +| [Genetec](genetec_inc.md) | 80 | 0 % | 100 % | 16 % | 2026-08-22 21:11 | ✅ | | |
| 44 | +| [SOGECLAIR](sogeclair.md) | 43 | 2 % | 100 % | 2 % | 2026-08-22 21:25 | ✅ | | |
| 45 | +| [Valsoft](valsoft_corp.md) | 36 | 11 % | 100 % | 17 % | 2026-08-22 21:30 | ✅ | | |
| 46 | +| [Side (PTW)](sideinc.md) | 31 | 0 % | 100 % | 32 % | 2026-08-22 21:25 | ✅ | | |
| 47 | +| [Keywords Studios](keywords_intl1.md) | 27 | 89 % | 100 % | 33 % | 2026-08-22 21:21 | ✅ | | |
| 48 | +| [Tecsys](tecsys.md) | 25 | 0 % | 100 % | 92 % | 2026-08-22 21:29 | ✅ | | |
| 49 | +| [Lamour](lamour.md) | 14 | 0 % | 100 % | 0 % | 2026-08-22 21:21 | ✅ | | |
| 50 | +| [Starlink Aviation](starlink_aviation.md) | 14 | 0 % | 100 % | 14 % | 2026-08-22 21:25 | ✅ | | |
| 51 | +| [Evolving Web](evolving_web.md) | 12 | 0 % | 100 % | 17 % | 2026-08-22 21:11 | ✅ | | |
| 52 | +| [LIDD Consultants](lidd.md) | 11 | 0 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 53 | +| [FLO (AddÉnergie)](flo_addenergie.md) | 11 | 0 % | 100 % | 18 % | 2026-08-22 21:11 | ✅ | | |
| 54 | +| [Eminent Valet](eminent_valet.md) | 10 | 100 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 55 | +| [Botpress](botpress.md) | 9 | 0 % | 100 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 56 | +| [Rentokil Initial](rentokil_initial.md) | 9 | 89 % | 100 % | 11 % | 2026-08-22 21:23 | ✅ | | |
| 57 | +| [Mila — Institut québécois d'IA](mila_2.md) | 8 | 0 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 58 | +| [Nuovo Photography](nuovophotography.md) | 7 | 29 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 59 | +| [Sweat Pants Agency](sweat_pants_agency.md) | 6 | 50 % | 100 % | 100 % | 2026-08-22 21:26 | ✅ | | |
| 60 | +| [CTS Foods Brokers](cts_foods_brokers_inc.md) | 6 | 33 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 61 | +| [Exportation et développement Canada (EDC)](export_development_canada.md) | 6 | 83 % | 100 % | 17 % | 2026-08-22 21:11 | ✅ | | |
| 62 | +| [Bardel Entertainment](bardel_entertainment.md) | 4 | 100 % | 100 % | 0 % | 2026-08-22 20:59 | ✅ | | |
| 63 | +| [Delmar International](delmar_international_inc.md) | 4 | 0 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 64 | +| [Unit8](unit8.md) | 3 | 0 % | 100 % | 67 % | 2026-08-22 21:30 | ✅ | | |
| 65 | +| [CSN Collision](csncollision.md) | 3 | 0 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 66 | +| [Damotech](damotech.md) | 3 | 33 % | 100 % | 33 % | 2026-08-22 21:08 | ✅ | | |
| 67 | +| [Charger Logistics](charger_logistics_inc.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:06 | ✅ | | |
| 68 | +| [Charlotte Tilbury](charlotte_tilbury.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:06 | ✅ | | |
| 69 | +| [Financeit](financeit.md) | 2 | 100 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 70 | +| [Atecna](atecna_montreal.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 20:59 | ✅ | | |
| 71 | +| [Flinks](flinks.md) | 0 | — | — | — | 2026-08-22 21:11 | ✅ | | |
| 61 | 72 | |
| 62 | 73 | ## Licence / conformité |
| 63 | 74 | |
modified
docs/connecteurs/ats-workday.md
+61 −44
@@ -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-workday.md |
| 7 | −Rôle : Fiche plateforme ATS workday — mécanique partagée + tableau des 41 tenants | |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 7 | +Rôle : Fiche plateforme ATS workday — mécanique partagée + tableau des 58 tenants | |
| 8 | +Généré : 2026-08-22 22:14 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 | −**41 employeurs connectés** via cette plateforme — **3570 offres actives**. Module partagé : `jobka/connectors/workday.py` ; un employeur = une sous-classe d'environ 10 lignes. | |
| 15 | +**58 employeurs connectés** via cette plateforme — **4108 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,47 +44,64 @@ Généré : 2026-08-19 05:40 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) | 1012 | 61 % | 63 % | 0 % | 2026-08-19 03:51 | ✅ | | |
| 48 | −| [Walmart Canada](walmart.md) | 979 | 93 % | 91 % | 0 % | 2026-08-19 04:35 | ✅ | | |
| 49 | −| [Mouvement Desjardins](desjardins.md) | 241 | 2 % | 94 % | 21 % | 2026-08-19 03:55 | ✅ | | |
| 50 | −| [Université McGill](mcgill.md) | 193 | 70 % | 100 % | 0 % | 2026-08-19 04:14 | ✅ | | |
| 51 | −| [BMO Groupe financier](bmo.md) | 106 | 88 % | 79 % | 17 % | 2026-08-19 03:41 | ✅ | | |
| 52 | −| [Agropur](agropur.md) | 75 | 93 % | 99 % | 0 % | 2026-08-19 03:32 | ✅ | | |
| 53 | −| [Airbus Canada](airbus.md) | 75 | 1 % | 100 % | 0 % | 2026-08-19 03:36 | ✅ | | |
| 54 | −| [Groupe Banque TD](td.md) | 69 | 99 % | 100 % | 99 % | 2026-08-19 04:24 | ✅ | | |
| 55 | −| [Autodesk](autodesk.md) | 65 | 91 % | 48 % | 20 % | 2026-08-19 03:37 | ✅ | | |
| 56 | −| [Banque CIBC](cibc.md) | 65 | 0 % | 100 % | 3 % | 2026-08-19 03:44 | ✅ | | |
| 57 | −| [CAE](cae.md) | 55 | 7 % | 93 % | 0 % | 2026-08-19 03:42 | ✅ | | |
| 58 | −| [Manuvie](manulife.md) | 51 | 90 % | 75 % | 29 % | 2026-08-19 04:11 | ✅ | | |
| 59 | −| [Cogeco](cogeco.md) | 50 | 18 % | 56 % | 4 % | 2026-08-19 03:52 | ✅ | | |
| 60 | −| [Beneva](beneva.md) | 48 | 2 % | 100 % | 2 % | 2026-08-19 03:39 | ✅ | | |
| 61 | −| [Investissements PSP](investpsp.md) | 43 | 5 % | 100 % | 0 % | 2026-08-19 04:04 | ✅ | | |
| 62 | −| [McKesson Canada](mckesson.md) | 43 | 84 % | 86 % | 93 % | 2026-08-19 04:15 | ✅ | | |
| 63 | −| [Promutuel Assurance](promutuel.md) | 37 | 0 % | 100 % | 16 % | 2026-08-19 04:16 | ✅ | | |
| 64 | −| [Service alimentaire Gordon](gfs.md) | 30 | 73 % | 100 % | 0 % | 2026-08-19 03:56 | ✅ | | |
| 65 | −| [Altasciences](altasciences.md) | 29 | 0 % | 100 % | 97 % | 2026-08-19 03:36 | ✅ | | |
| 66 | −| [CDPQ — Caisse de dépôt et placement du Québec](cdpq.md) | 28 | 0 % | 100 % | 0 % | 2026-08-19 03:42 | ✅ | | |
| 67 | −| [EXFO](exfo.md) | 27 | 0 % | 100 % | 56 % | 2026-08-19 03:56 | ✅ | | |
| 68 | −| [Scotts Canada (Fafard)](scottsmiraclegro.md) | 27 | 4 % | 100 % | 0 % | 2026-08-19 04:18 | ✅ | | |
| 69 | −| [Saputo](saputo.md) | 24 | 75 % | 100 % | 100 % | 2026-08-19 04:18 | ✅ | | |
| 70 | −| [Intact Corporation financière](intactfc.md) | 23 | 0 % | 100 % | 0 % | 2026-08-19 04:03 | ✅ | | |
| 71 | −| [Rio Tinto](riotinto.md) | 23 | 0 % | 100 % | 4 % | 2026-08-19 04:17 | ✅ | | |
| 72 | −| [CAA-Québec](caaquebec.md) | 19 | 21 % | 100 % | 0 % | 2026-08-19 03:41 | ✅ | | |
| 73 | −| [iA Groupe financier](ia_groupe.md) | 17 | 100 % | 100 % | 6 % | 2026-08-19 04:03 | ✅ | | |
| 74 | −| [BDC](bdc.md) | 16 | 0 % | 100 % | 0 % | 2026-08-19 03:38 | ✅ | | |
| 75 | −| [Alcoa Canada](alcoa.md) | 15 | 13 % | 40 % | 0 % | 2026-08-19 03:36 | ✅ | | |
| 76 | −| [GSK](gsk.md) | 12 | 0 % | 83 % | 0 % | 2026-08-19 03:56 | ✅ | | |
| 77 | −| [Investissement Québec](investquebec.md) | 12 | 8 % | 100 % | 0 % | 2026-08-19 04:04 | ✅ | | |
| 78 | −| [Fonds de solidarité FTQ](fondsftq.md) | 10 | 0 % | 100 % | 100 % | 2026-08-19 03:56 | ✅ | | |
| 79 | −| [Canadian Tire](canadiantirecorporation.md) | 9 | 56 % | 100 % | 0 % | 2026-08-19 03:42 | ✅ | | |
| 80 | −| [JG Rive-Sud (GFS)](jgrivesud.md) | 9 | 67 % | 100 % | 0 % | 2026-08-19 04:04 | ✅ | | |
| 81 | −| [Sun Life](sunlife.md) | 8 | 0 % | 100 % | 0 % | 2026-08-19 04:19 | ✅ | | |
| 82 | −| [Church & Dwight Canada](churchdwight.md) | 6 | 0 % | 100 % | 0 % | 2026-08-19 03:42 | ✅ | | |
| 83 | −| [Raymond Chabot Grant Thornton](rcgt.md) | 5 | 0 % | 100 % | 20 % | 2026-08-19 04:16 | ✅ | | |
| 84 | −| [Pfizer Canada](pfizer.md) | 4 | 100 % | 0 % | 0 % | 2026-08-19 04:16 | ✅ | | |
| 85 | −| [Plusgrade](plusgrade.md) | 4 | 0 % | 100 % | 0 % | 2026-08-19 04:16 | ✅ | | |
| 86 | −| [Brasseries Sleeman (Unibroue)](sleeman.md) | 3 | 33 % | 100 % | 0 % | 2026-08-19 04:18 | ✅ | | |
| 87 | −| [Suncor Énergie](suncor.md) | 3 | 0 % | 100 % | 0 % | 2026-08-19 04:19 | ✅ | | |
| 47 | +| [Couche-Tard / Circle K](circlek.md) | 1019 | 61 % | 63 % | 0 % | 2026-08-22 21:07 | ✅ | | |
| 48 | +| [Walmart Canada](walmart.md) | 1008 | 92 % | 92 % | 0 % | 2026-08-22 21:32 | ✅ | | |
| 49 | +| [Mouvement Desjardins](desjardins.md) | 255 | 2 % | 93 % | 22 % | 2026-08-22 21:09 | ✅ | | |
| 50 | +| [Université McGill](mcgill.md) | 194 | 73 % | 100 % | 0 % | 2026-08-22 21:22 | ✅ | | |
| 51 | +| [Consignaction (AQRCB)](consignaction.md) | 134 | 90 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 52 | +| [BMO Groupe financier](bmo.md) | 121 | 86 % | 82 % | 15 % | 2026-08-22 21:00 | ✅ | | |
| 53 | +| [Dentalcorp](dentalcorp.md) | 97 | 13 % | 99 % | 1 % | 2026-08-22 21:08 | ✅ | | |
| 54 | +| [Airbus Canada](airbus.md) | 83 | 1 % | 100 % | 0 % | 2026-08-22 20:58 | ✅ | | |
| 55 | +| [Agropur](agropur.md) | 71 | 94 % | 99 % | 0 % | 2026-08-22 20:56 | ✅ | | |
| 56 | +| [Groupe Banque TD](td.md) | 71 | 97 % | 100 % | 99 % | 2026-08-22 21:29 | ✅ | | |
| 57 | +| [Autodesk](autodesk.md) | 65 | 89 % | 46 % | 22 % | 2026-08-22 20:59 | ✅ | | |
| 58 | +| [CAE](cae.md) | 56 | 7 % | 93 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 59 | +| [Banque CIBC](cibc.md) | 56 | 0 % | 100 % | 4 % | 2026-08-22 21:06 | ✅ | | |
| 60 | +| [Manuvie](manulife.md) | 55 | 91 % | 69 % | 29 % | 2026-08-22 21:22 | ✅ | | |
| 61 | +| [Cogeco](cogeco.md) | 45 | 18 % | 60 % | 2 % | 2026-08-22 21:08 | ✅ | | |
| 62 | +| [McKesson Canada](mckesson.md) | 44 | 80 % | 89 % | 89 % | 2026-08-22 21:22 | ✅ | | |
| 63 | +| [Investissements PSP](investpsp.md) | 43 | 5 % | 100 % | 0 % | 2026-08-22 21:15 | ✅ | | |
| 64 | +| [La Maison Simons](simons.md) | 42 | 0 % | 93 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 65 | +| [Beneva](beneva.md) | 39 | 3 % | 100 % | 3 % | 2026-08-22 21:00 | ✅ | | |
| 66 | +| [TJX Canada (Winners, HomeSense, Marshalls)](tjx.md) | 38 | 100 % | 100 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 67 | +| [Promutuel Assurance](promutuel.md) | 34 | 0 % | 100 % | 18 % | 2026-08-22 21:23 | ✅ | | |
| 68 | +| [Service alimentaire Gordon](gfs.md) | 33 | 73 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 69 | +| [Intelcom (Dragonfly)](intelcomgroup.md) | 31 | 0 % | 100 % | 0 % | 2026-08-22 21:15 | ✅ | | |
| 70 | +| [Altasciences](altasciences.md) | 29 | 0 % | 100 % | 97 % | 2026-08-22 20:59 | ✅ | | |
| 71 | +| [Scotts Canada (Fafard)](scottsmiraclegro.md) | 27 | 4 % | 100 % | 0 % | 2026-08-22 21:24 | ✅ | | |
| 72 | +| [CDPQ — Caisse de dépôt et placement du Québec](cdpq.md) | 25 | 0 % | 100 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 73 | +| [Saputo](saputo.md) | 25 | 76 % | 100 % | 100 % | 2026-08-22 21:24 | ✅ | | |
| 74 | +| [EXFO](exfo.md) | 24 | 0 % | 100 % | 58 % | 2026-08-22 21:11 | ✅ | | |
| 75 | +| [Cineplex](cineplex.md) | 24 | 4 % | 100 % | 8 % | 2026-08-22 21:06 | ✅ | | |
| 76 | +| [FedEx Express Canada](fedex.md) | 24 | 100 % | 88 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 77 | +| [OPENLANE Canada](openlane.md) | 24 | 29 % | 83 % | 4 % | 2026-08-22 21:23 | ✅ | | |
| 78 | +| [Intact Corporation financière](intactfc.md) | 23 | 0 % | 100 % | 0 % | 2026-08-22 21:15 | ✅ | | |
| 79 | +| [Rio Tinto](riotinto.md) | 23 | 0 % | 100 % | 4 % | 2026-08-22 21:23 | ✅ | | |
| 80 | +| [JLL](jll.md) | 22 | 5 % | 91 % | 100 % | 2026-08-22 21:15 | ✅ | | |
| 81 | +| [CAA-Québec](caaquebec.md) | 19 | 21 % | 100 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 82 | +| [Alcoa Canada](alcoa.md) | 16 | 12 % | 44 % | 0 % | 2026-08-22 20:58 | ✅ | | |
| 83 | +| [BDC](bdc.md) | 15 | 0 % | 100 % | 0 % | 2026-08-22 21:00 | ✅ | | |
| 84 | +| [iA Groupe financier](ia_groupe.md) | 13 | 100 % | 100 % | 8 % | 2026-08-22 21:15 | ✅ | | |
| 85 | +| [Investissement Québec](investquebec.md) | 13 | 8 % | 100 % | 0 % | 2026-08-22 21:15 | ✅ | | |
| 86 | +| [Allstate Canada](allstate.md) | 13 | 23 % | 85 % | 15 % | 2026-08-22 20:59 | ✅ | | |
| 87 | +| [GSK](gsk.md) | 12 | 0 % | 83 % | 0 % | 2026-08-22 21:12 | ✅ | | |
| 88 | +| [JG Rive-Sud (GFS)](jgrivesud.md) | 12 | 75 % | 100 % | 0 % | 2026-08-22 21:15 | ✅ | | |
| 89 | +| [Aritzia](aritzia.md) | 11 | 64 % | 100 % | 0 % | 2026-08-22 20:59 | ✅ | | |
| 90 | +| [Sun Life](sunlife.md) | 10 | 10 % | 100 % | 0 % | 2026-08-22 21:26 | ✅ | | |
| 91 | +| [Abbott](abbott.md) | 10 | 20 % | 90 % | 40 % | 2026-08-22 20:56 | ✅ | | |
| 92 | +| [VF Corporation (The North Face, Vans)](vfc.md) | 10 | 80 % | 100 % | 0 % | 2026-08-22 21:30 | ✅ | | |
| 93 | +| [Canadian Tire](canadiantirecorporation.md) | 9 | 56 % | 100 % | 0 % | 2026-08-22 21:04 | ✅ | | |
| 94 | +| [Fonds de solidarité FTQ](fondsftq.md) | 8 | 0 % | 100 % | 100 % | 2026-08-22 21:11 | ✅ | | |
| 95 | +| [Pfizer Canada](pfizer.md) | 7 | 100 % | 29 % | 14 % | 2026-08-22 21:23 | ✅ | | |
| 96 | +| [Church & Dwight Canada](churchdwight.md) | 6 | 0 % | 100 % | 0 % | 2026-08-22 21:06 | ✅ | | |
| 97 | +| [Plusgrade](plusgrade.md) | 5 | 0 % | 100 % | 0 % | 2026-08-22 21:23 | ✅ | | |
| 98 | +| [Raymond Chabot Grant Thornton](rcgt.md) | 5 | 0 % | 100 % | 20 % | 2026-08-22 21:23 | ✅ | | |
| 99 | +| [Brasseries Sleeman (Unibroue)](sleeman.md) | 3 | 33 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 100 | +| [Suncor Énergie](suncor.md) | 2 | 0 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 101 | +| [Fiserv](fiserv.md) | 2 | 50 % | 100 % | 0 % | 2026-08-22 21:11 | ✅ | | |
| 102 | +| [Guillevin International](guillevin.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:14 | ✅ | | |
| 103 | +| [Shell Canada](shell.md) | 1 | 0 % | 100 % | 0 % | 2026-08-22 21:25 | ✅ | | |
| 104 | +| [ZOLL Medical](zoll.md) | 1 | 100 % | 100 % | 100 % | 2026-08-22 21:32 | ✅ | | |
| 88 | 105 | |
| 89 | 106 | ## Licence / conformité |
| 90 | 107 | |
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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 — **1238 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 — **1301 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-19 05:40 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) | 1238 | 36 % | 100 % | 82 % | 2026-08-19 04:45 | ✅ | | |
| 54 | +| [Réseau Atlas Workland (~80 employeurs QC : CSS, cégeps, Santé Québec, STQ, UQTR…)](atlas_workland.md) | 1301 | 34 % | 100 % | 81 % | 2026-08-22 20:59 | ✅ | | |
| 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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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 — **842 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 — **874 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-19 05:40 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) | 149 | 1 % | 0 % | 0 % | 2026-08-19 05:05 | ✅ | | |
| 42 | −| [CISSS de l'Abitibi-Témiscamingue](cisss_abitibi.md) | 141 | 0 % | 0 % | 0 % | 2026-08-19 04:55 | ✅ | | |
| 43 | −| [CISSS des Laurentides](cisss_laurentides.md) | 130 | 12 % | 0 % | 1 % | 2026-08-19 05:39 | ✅ | | |
| 44 | −| [CISSS de Lanaudière](cisss_lanaudiere.md) | 124 | 4 % | 0 % | 0 % | 2026-08-19 05:35 | ✅ | | |
| 45 | −| [CISSS de Chaudière-Appalaches](cisss_chaudiere_appalaches.md) | 112 | 8 % | 0 % | 0 % | 2026-08-19 04:59 | ✅ | | |
| 46 | −| [CISSS de l'Outaouais](cisss_outaouais.md) | 101 | 31 % | 0 % | 0 % | 2026-08-19 05:09 | ✅ | | |
| 47 | −| [CHU de Québec — Université Laval](chu_quebec.md) | 60 | 10 % | 0 % | 0 % | 2026-08-19 04:51 | ✅ | | |
| 48 | −| [CHUM](chum.md) | 25 | 0 % | 0 % | 0 % | 2026-08-19 04:52 | ✅ | | |
| 41 | +| [CISSS de Laval](cisss_laval.md) | 149 | 1 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 42 | +| [CISSS des Laurentides](cisss_laurentides.md) | 142 | 11 % | 100 % | 1 % | 2026-08-22 21:08 | ✅ | | |
| 43 | +| [CISSS de l'Abitibi-Témiscamingue](cisss_abitibi.md) | 140 | 0 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 44 | +| [CISSS de Lanaudière](cisss_lanaudiere.md) | 132 | 5 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 45 | +| [CISSS de Chaudière-Appalaches](cisss_chaudiere_appalaches.md) | 115 | 9 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 46 | +| [CISSS de l'Outaouais](cisss_outaouais.md) | 108 | 31 % | 100 % | 0 % | 2026-08-22 21:08 | ✅ | | |
| 47 | +| [CHU de Québec — Université Laval](chu_quebec.md) | 59 | 7 % | 100 % | 0 % | 2026-08-22 21:06 | ✅ | | |
| 48 | +| [CHUM](chum.md) | 29 | 0 % | 100 % | 0 % | 2026-08-22 21:06 | ✅ | | |
| 49 | 49 | |
| 50 | 50 | ## Licence / conformité |
| 51 | 51 | |
modified
docs/connecteurs/autodesk.md
+20 −16
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **65 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **65 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -50,21 +50,21 @@ Complétude mesurée sur les **65 offres actives** de la source (base live, 2026 | ||
| 50 | 50 | | `region` — Région | région administrative | 32 % | |
| 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 | 20 % | | |
| 53 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 22 % | | |
| 54 | 54 | | `employment_type` — Type | temps_plein / temps_partiel / … | 97 % | |
| 55 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 91 % | | |
| 56 | −| `salary_label` — Libellé salaire | texte salarial original | 91 % | | |
| 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 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 85 % | | |
| 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) | 48 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 46 % | | |
| 66 | 66 | |
| 67 | −Exemple réel : *AI Builder, Principal Product Manager* — ∅ · For Canada based roles, we expect a starting base salary between $142,000 and $207,900. Of… · parue le 2026-08-14. | |
| 67 | +Exemple réel : *Senior Software Developer* — ∅ · For Canada based roles, we expect a starting base salary between $107,000 and $157,300. Of… · parue le 2026-08-21. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,19 +79,23 @@ Exemple réel : *AI Builder, Principal Product Manager* — ∅ · For Canada ba | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 68 (dont **65 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 59/65 actives (91 %) | |
| 86 | −- **GPS** : 31/65 actives (48 %) | |
| 87 | −- **Mode** : 13/65 actives (20 %) | |
| 84 | +- **Offres en base** : 74 (dont **65 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 58/65 actives (89 %) | |
| 86 | +- **GPS** : 30/65 actives (46 %) | |
| 87 | +- **Mode** : 14/65 actives (22 %) | |
| 88 | 88 | - **Parution** : 65/65 actives (100 %) |
| 89 | −- **Dernier sync** : 2026-08-19 03:37 — trouvées 65, +0, ~61, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 89 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 65, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 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) | 1 | 2026-08-22 03:19 | | |
| 95 | 99 | |
| 96 | 100 | - 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;"` |
| 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`. |
added
docs/connecteurs/autotradercanada.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/autotradercanada.md | |
| 7 | +Rôle : Fiche connecteur — AutoTrader Canada (employeur direct, ATS greenhouse) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# AutoTrader Canada (`autotradercanada`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`greenhouse`](ats-greenhouse.md) · Statut registre : actif · Connecteur : `jobka/connectors/autotradercanada.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [AutoTrader Canada]() | |
| 20 | +- **Page carrières** : https://job-boards.greenhouse.io/autotradercanada | |
| 21 | +- **Secteurs** : Automobile | |
| 22 | +- **Région** : Longueuil | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-greenhouse.md`](ats-greenhouse.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `autotradercanada` | | |
| 33 | +| `EMPLOYER` | `AutoTrader Canada` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 100 % | | |
| 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 | 0 % | | |
| 63 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 64 | + | |
| 65 | +Exemple réel : *Performance Manager, Longueuil, QC* — Longueuil · $65,000 — $70,000 CAD · parue le 2026-07-29. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 20:59 — trouvées 2, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 AutoTrader Canada » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/avantageplus.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/avantageplus.md | |
| 7 | +Rôle : Fiche connecteur — Avantage Plus (employeur direct, ATS recruitee) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Avantage Plus (`avantageplus`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`recruitee`](ats-recruitee.md) · Statut registre : actif · Connecteur : `jobka/connectors/avantageplus.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Avantage Plus]() | |
| 20 | +- **Page carrières** : https://avantageplus.recruitee.com | |
| 21 | +- **Secteurs** : Services | |
| 22 | +- **Région** : Québec | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-recruitee.md`](ats-recruitee.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Avantage Plus` | | |
| 33 | +| `ORG` | `avantageplus` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 52 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | | |
| 53 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 10 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 10 % | | |
| 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é, …) | 90 % | | |
| 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 : *Économiste de la construction* — Montréal · Salaire offert de 95 000$ · parue le 2026-01-30. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 10 (dont **10 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 1/10 actives (10 %) | |
| 79 | +- **GPS** : 10/10 actives (100 %) | |
| 80 | +- **Mode** : 10/10 actives (100 %) | |
| 81 | +- **Parution** : 10/10 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 10, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Avantage Plus » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/aviyatech.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **5 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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-19 03:37 — trouvées 5, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 82 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 5, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/bardel_entertainment.md
+13 −13
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -53,16 +53,16 @@ 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 | 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) | 25 % | | |
| 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é, …) | 33 % | | |
| 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 | 100 % | |
| 63 | 63 | | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | |
| 64 | 64 | |
| 65 | −Exemple réel : *Artiste d’éclairage/ Lighting Artist (Featurette)* — Montréal · Échelle salariale : $ 1400 - 1700 $ CAD par semaine · parue le 2026-08-12. | |
| 65 | +Exemple réel : *Artiste en éclairage / Lighting Artist - Feature Animation (short-term)* — Montréal · Échelle de salaires : $1,600 - 2,000 CAD par semaine · parue le 2026-08-20. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Artiste d’éclairage/ Lighting Artist (Featurette)* — Montr | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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** : 3/3 actives (100 %) | |
| 80 | −- **Mode** : 0/3 actives (0 %) | |
| 81 | −- **Parution** : 3/3 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:37 — trouvées 3, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 77 | +- **Offres en base** : 4 (dont **4 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 4/4 actives (100 %) | |
| 79 | +- **GPS** : 4/4 actives (100 %) | |
| 80 | +- **Mode** : 0/4 actives (0 %) | |
| 81 | +- **Parution** : 4/4 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 20:59 — trouvées 4, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/bayshore.md
+11 −11
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 42 | +Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-08-22 22:14 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) | 36 % | | |
| 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,15 +80,15 @@ Exemple réel : *Gestionnaire de programme - Program Manager* — Montréal · | ||
| 80 | 80 | |
| 81 | 81 | ## Volumétrie & complétude live |
| 82 | 82 | |
| 83 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 83 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 84 | 84 | |
| 85 | −- **Offres en base** : 13 (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-19 03:38 — trouvées 13, +0, ~0, -0 | |
| 91 | −- **Syncs enregistrés** (`sync_log`) : 16 | |
| 85 | +- **Offres en base** : 14 (dont **14 actives**, 0 masquées comme doublons `dup_of`) | |
| 86 | +- **Salaire** : 0/14 actives (0 %) | |
| 87 | +- **GPS** : 14/14 actives (100 %) | |
| 88 | +- **Mode** : 0/14 actives (0 %) | |
| 89 | +- **Parution** : 0/14 actives (0 %) | |
| 90 | +- **Dernier sync** : 2026-08-22 21:00 — trouvées 14, +0, ~0, -0 | |
| 91 | +- **Syncs enregistrés** (`sync_log`) : 75 | |
| 92 | 92 | |
| 93 | 93 | ## Erreurs & dépannage |
| 94 | 94 | |
modified
docs/connecteurs/bc2.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -77,15 +77,15 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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-19 03:38 — trouvées 2, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:00 — trouvées 2, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/bdc.md
+12 −12
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **16 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **15 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -58,13 +58,13 @@ Complétude mesurée sur les **16 offres actives** de la source (base live, 2026 | ||
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 38 % | | |
| 61 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 40 % | | |
| 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 : *SPECIALIST, FINANCIAL REPORTING* — Montréal · ∅ · parue le 2026-08-18. | |
| 67 | +Exemple réel : *ADMINISTRATIVE ASSISTANT - DEFENCE* — Montréal · ∅ · parue le 2026-08-19. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,15 +79,15 @@ Exemple réel : *SPECIALIST, FINANCIAL REPORTING* — Montréal · ∅ · parue | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 18 (dont **16 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 0/16 actives (0 %) | |
| 86 | −- **GPS** : 16/16 actives (100 %) | |
| 87 | −- **Mode** : 0/16 actives (0 %) | |
| 88 | −- **Parution** : 16/16 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:38 — trouvées 16, +0, ~16, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 84 | +- **Offres en base** : 19 (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-22 21:00 — trouvées 15, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
added
docs/connecteurs/bdl_energie.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/bdl_energie.md | |
| 7 | +Rôle : Fiche connecteur — BDL Énergie (employeur direct, ATS breezy) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# BDL Énergie (`bdl_energie`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`breezy`](ats-breezy.md) · Statut registre : actif · Connecteur : `jobka/connectors/bdl_energie.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [BDL Énergie]() | |
| 20 | +- **Page carrières** : https://bdl-energie.breezy.hr | |
| 21 | +- **Secteurs** : Énergie | |
| 22 | +- **Région** : Sherbrooke | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-breezy.md`](ats-breezy.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `BDL Énergie` | | |
| 33 | +| `ORG` | `bdl-energie` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-22 22:14 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 | 10 % | | |
| 50 | +| `postal_code` — Code postal | code postal si publié | 40 % | | |
| 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) | 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é, …) | 90 % | | |
| 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) | 30 % | | |
| 64 | + | |
| 65 | +Exemple réel : *Commis(e) à la répartition* — 9771 Boul Métropolitain E, Anjou, QC · ∅ · parue le 2026-08-19. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:00 — trouvées 10, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync bdl_energie` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bdl_energie' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 BDL Énergie » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/bell_textron.md
+12 −12
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **15 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 42 | +Complétude mesurée sur les **16 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 43 | 43 | |
| 44 | 44 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 45 | 45 | |---|---|---| |
@@ -60,12 +60,12 @@ Complétude mesurée sur les **15 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) | 33 % | | |
| 63 | +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 38 % | | |
| 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 : *Analyste en conformité commerce internationale /Trade Compliance Associate Analyst* — Québec · ∅ · parue le 2026-08-04. | |
| 68 | +Exemple réel : *Ingénieur de projet (407) / Project Engineer (407)* — Québec · ∅ · parue le 2026-08-19. | |
| 69 | 69 | |
| 70 | 70 | ## Fréquence & budgets |
| 71 | 71 | |
@@ -80,15 +80,15 @@ Exemple réel : *Analyste en conformité commerce internationale /Trade Complian | ||
| 80 | 80 | |
| 81 | 81 | ## Volumétrie & complétude live |
| 82 | 82 | |
| 83 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 83 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 84 | 84 | |
| 85 | −- **Offres en base** : 15 (dont **15 actives**, 0 masquées comme doublons `dup_of`) | |
| 86 | −- **Salaire** : 0/15 actives (0 %) | |
| 87 | −- **GPS** : 15/15 actives (100 %) | |
| 88 | −- **Mode** : 0/15 actives (0 %) | |
| 89 | −- **Parution** : 15/15 actives (100 %) | |
| 90 | −- **Dernier sync** : 2026-08-19 03:38 — trouvées 15, +0, ~0, -0 | |
| 91 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 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-22 21:00 — trouvées 16, +0, ~0, -0 | |
| 91 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 92 | 92 | |
| 93 | 93 | ## Erreurs & dépannage |
| 94 | 94 | |
modified
docs/connecteurs/beneva.md
+13 −13
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **39 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -50,10 +50,10 @@ Complétude mesurée sur les **48 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 | 3 % | | |
| 54 | 54 | | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | |
| 55 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 2 % | | |
| 56 | −| `salary_label` — Libellé salaire | texte salarial original | 2 % | | |
| 55 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 3 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 3 % | | |
| 57 | 57 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | |
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 59 | 59 | | `date_posted` — Date de parution | ISO 8601 | 100 % | |
@@ -79,15 +79,15 @@ Exemple réel : *Agent service à la clientèle* — Québec · Salaire débutan | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 49 (dont **48 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 1/48 actives (2 %) | |
| 86 | −- **GPS** : 48/48 actives (100 %) | |
| 87 | −- **Mode** : 1/48 actives (2 %) | |
| 88 | −- **Parution** : 48/48 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:39 — trouvées 48, +0, ~34, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 84 | +- **Offres en base** : 52 (dont **39 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 1/39 actives (3 %) | |
| 86 | +- **GPS** : 39/39 actives (100 %) | |
| 87 | +- **Mode** : 1/39 actives (3 %) | |
| 88 | +- **Parution** : 39/39 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:00 — trouvées 39, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/bento_sushi.md
+12 −8
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **9 offres actives** de la source (base live, 2026- | ||
| 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 | 67 | Exemple réel : *Membres de l'équipe de service alimentaire* — Québec · ∅ · parue le 2026-08-14. |
| 68 | 68 | |
@@ -79,19 +79,23 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | 84 | - **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`) |
| 85 | 85 | - **Salaire** : 8/9 actives (89 %) |
| 86 | −- **GPS** : 0/9 actives (0 %) | |
| 86 | +- **GPS** : 9/9 actives (100 %) | |
| 87 | 87 | - **Mode** : 0/9 actives (0 %) |
| 88 | 88 | - **Parution** : 9/9 actives (100 %) |
| 89 | −- **Dernier sync** : 2026-08-19 04:49 — trouvées 9, +9, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 89 | +- **Dernier sync** : 2026-08-22 21:00 — trouvées 9, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 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 | +| 500 Server Error: for url: https://workforcenow.adp.com/mascsr/default/careercenter/publi… | 1 | 2026-08-22 00:30 | | |
| 95 | 99 | |
| 96 | 100 | - 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;"` |
| 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/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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **39 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **38 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -49,20 +49,20 @@ Complétude mesurée sur les **39 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 | 100 % | |
| 52 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | | |
| 52 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 97 % | | |
| 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 | 56 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 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 | 100 % | |
| 63 | 63 | | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | |
| 64 | 64 | |
| 65 | −Exemple réel : *Release Manager - Dead By Daylight \| Responsable du Déploiement - Dead By Daylight* — Montréal · ∅ · parue le 2026-08-17. | |
| 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. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Release Manager - Dead By Daylight \| Responsable du Déploieme | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | −- **Offres en base** : 39 (dont **39 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | −- **Salaire** : 0/39 actives (0 %) | |
| 79 | −- **GPS** : 39/39 actives (100 %) | |
| 80 | −- **Mode** : 39/39 actives (100 %) | |
| 81 | −- **Parution** : 39/39 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:39 — trouvées 39, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 77 | +- **Offres en base** : 40 (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-22 21:00 — trouvées 38, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-22 22:14 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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-19 03:39 — trouvées 8, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:00 — trouvées 8, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
added
docs/connecteurs/billups.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/billups.md | |
| 7 | +Rôle : Fiche connecteur — Billups (employeur direct, ATS ashby) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Billups (`billups`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`ashby`](ats-ashby.md) · Statut registre : actif · Connecteur : `jobka/connectors/billups.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Billups]() | |
| 20 | +- **Page carrières** : https://jobs.ashbyhq.com/billups | |
| 21 | +- **Secteurs** : Marketing | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-ashby.md`](ats-ashby.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Billups` | | |
| 33 | +| `ORG` | `billups` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 100 % | | |
| 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 : *Account Manager - Canada* — Montréal · 75 000,00 $ par année · parue le 2026-07-29. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 1 (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-08-22 21:00 — trouvées 1, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync billups` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='billups' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Billups » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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-19 03:39 — trouvées 2, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 28 | |
| 82 | +- **Dernier sync** : 2026-08-22 21:00 — trouvées 2, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 87 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
added
docs/connecteurs/black_mcdonald_francais.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/black_mcdonald_francais.md | |
| 7 | +Rôle : Fiche connecteur — Black & McDonald (employeur direct, ATS breezy) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Black & McDonald (`black_mcdonald_francais`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`breezy`](ats-breezy.md) · Statut registre : actif · Connecteur : `jobka/connectors/black_mcdonald_francais.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Black & McDonald]() | |
| 20 | +- **Page carrières** : https://black-mcdonald-francais.breezy.hr | |
| 21 | +- **Secteurs** : Construction | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-breezy.md`](ats-breezy.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Black & McDonald` | | |
| 33 | +| `ORG` | `black-mcdonald-francais` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 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) | 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 | 0 % | | |
| 63 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 64 | + | |
| 65 | +Exemple réel : *Frigoriste Compagnon* — Brossard · ∅ · parue le 2026-05-12. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:00 — trouvées 2, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync black_mcdonald_francais` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='black_mcdonald_francais' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Black & McDonald » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/bleufeu.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/bleufeu.md | |
| 7 | +Rôle : Fiche connecteur — BLEUFEU (Festival d'été de Québec) (employeur direct, ATS dayforce) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# BLEUFEU (Festival d'été de Québec) (`bleufeu`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`dayforce`](ats-dayforce.md) · Statut registre : actif · Connecteur : `jobka/connectors/bleufeu.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [BLEUFEU (Festival d'été de Québec)]() | |
| 20 | +- **Page carrières** : https://jobs.dayforcehcm.com/fr-CA/feiq/CANDIDATEPORTAL | |
| 21 | +- **Secteurs** : Divertissement | |
| 22 | +- **Région** : Québec | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-dayforce.md`](ats-dayforce.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `CANDIDATEPORTAL` | | |
| 33 | +| `CULTURE` | `fr-CA` | | |
| 34 | +| `EMPLOYER` | `BLEUFEU (Festival d'été de Québec)` | | |
| 35 | +| `NS` | `feiq` | | |
| 36 | +- **Throttle** : 0.8 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 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 / … | 0 % | | |
| 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 % | | |
| 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 | 0 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Candidature spontanée - BLEUFEU* — Québec · ∅ · parue le 2026-04-17. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.8 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_DAYFORCE_DETAIL_LIMIT` | `80` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:00 — trouvées 1, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync bleufeu` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bleufeu' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 BLEUFEU (Festival d'été de Québec) » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/bmo.md
+23 −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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **106 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **121 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -46,25 +46,25 @@ Complétude mesurée sur les **106 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 | 80 % | | |
| 49 | +| `city` — Ville | municipalité normalisée | 83 % | | |
| 50 | 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 | 17 % | | |
| 54 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 93 % | | |
| 55 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 88 % | | |
| 56 | −| `salary_label` — Libellé salaire | texte salarial original | 88 % | | |
| 53 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 15 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 96 % | | |
| 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 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 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) | 79 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 82 % | | |
| 66 | 66 | |
| 67 | −Exemple réel : *Director, Equipment Finance* — Montréal · $69,000.00 - $129,000.00 · parue le 2026-08-18. | |
| 67 | +Exemple réel : *Manager, Court Orders Oversight (Bilingual)* — Montréal · $69,000.00 - $129,000.00 · parue le 2026-08-21. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,19 +79,23 @@ Exemple réel : *Director, Equipment Finance* — Montréal · $69,000.00 - $129 | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 108 (dont **106 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 93/106 actives (88 %) | |
| 86 | −- **GPS** : 84/106 actives (79 %) | |
| 87 | −- **Mode** : 18/106 actives (17 %) | |
| 88 | −- **Parution** : 106/106 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:41 — trouvées 106, +0, ~96, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 84 | +- **Offres en base** : 141 (dont **121 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 104/121 actives (86 %) | |
| 86 | +- **GPS** : 99/121 actives (82 %) | |
| 87 | +- **Mode** : 18/121 actives (15 %) | |
| 88 | +- **Parution** : 121/121 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:00 — trouvées 121, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 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) | 1 | 2026-08-22 03:20 | | |
| 95 | 99 | |
| 96 | 100 | - 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;"` |
| 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/bombardier.md
+13 −13
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **847 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **812 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -48,8 +48,8 @@ Complétude mesurée sur les **847 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 | 88 % | | |
| 52 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 5 % | | |
| 51 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 89 % | | |
| 52 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 4 % | | |
| 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 % | |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **847 offres actives** de la source (base live, 202 | ||
| 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-15. | |
| 65 | +Exemple réel : *Analyst Sr, Quality Assurance Product Safety Management* — Dorval · ∅ · parue le 2026-08-22. | |
| 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | −- **Offres en base** : 853 (dont **847 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | −- **Salaire** : 0/847 actives (0 %) | |
| 84 | −- **GPS** : 847/847 actives (100 %) | |
| 85 | −- **Mode** : 742/847 actives (88 %) | |
| 86 | −- **Parution** : 847/847 actives (100 %) | |
| 87 | −- **Dernier sync** : 2026-08-19 03:41 — trouvées 847, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 82 | +- **Offres en base** : 869 (dont **812 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | +- **Salaire** : 0/812 actives (0 %) | |
| 84 | +- **GPS** : 812/812 actives (100 %) | |
| 85 | +- **Mode** : 724/812 actives (89 %) | |
| 86 | +- **Parution** : 812/812 actives (100 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 812, +0, ~812, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -53,7 +53,7 @@ Complétude mesurée sur les **8 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) | 75 % | | |
| 56 | +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 78 % | | |
| 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 **8 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 : *Développeur(euse) croissance - GTM* — Québec · ∅ · parue le 2026-08-05. | |
| 65 | +Exemple réel : *Designer produit sénior (Senior Product Designer)* — Montréal · ∅ · parue le 2026-08-21. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Développeur(euse) croissance - GTM* — Québec · ∅ · paru | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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** : 0/8 actives (0 %) | |
| 81 | −- **Parution** : 8/8 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:41 — trouvées 10, +0, ~4, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 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-22 21:04 — trouvées 11, +0, ~4, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
added
docs/connecteurs/bpa.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/bpa.md | |
| 7 | +Rôle : Fiche connecteur — BPA (Experts-conseils) (employeur direct, ATS dayforce) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# BPA (Experts-conseils) (`bpa`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`dayforce`](ats-dayforce.md) · Statut registre : actif · Connecteur : `jobka/connectors/bpa.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [BPA (Experts-conseils)]() | |
| 20 | +- **Page carrières** : https://jobs.dayforcehcm.com/fr-CA/bpapointca/CANDIDATEPORTAL | |
| 21 | +- **Secteurs** : Ingénierie | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-dayforce.md`](ats-dayforce.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `CANDIDATEPORTAL` | | |
| 33 | +| `CULTURE` | `fr-CA` | | |
| 34 | +| `EMPLOYER` | `BPA (Experts-conseils)` | | |
| 35 | +| `NS` | `bpapointca` | | |
| 36 | +- **Throttle** : 0.8 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **51 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 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 / … | 0 % | | |
| 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 % | | |
| 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é, …) | 53 % | | |
| 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 | 0 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Contrôleur - Contrôleuse de projet - Génie-conseil* — Laval · ∅ · parue le 2026-08-21. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.8 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_DAYFORCE_DETAIL_LIMIT` | `80` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | + | |
| 84 | +- **Offres en base** : 51 (dont **51 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 0/51 actives (0 %) | |
| 86 | +- **GPS** : 51/51 actives (100 %) | |
| 87 | +- **Mode** : 0/51 actives (0 %) | |
| 88 | +- **Parution** : 51/51 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 51, +0, ~1, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync bpa` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='bpa' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 BPA (Experts-conseils) » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/brandmomentum.md
+13 −13
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **30 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **32 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -50,8 +50,8 @@ Complétude mesurée sur les **30 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 | 70 % | | |
| 54 | −| `salary_label` — Libellé salaire | texte salarial original | 73 % | | |
| 53 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 72 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 75 % | | |
| 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 **30 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 : *Représentant(e) des ventes – Roadshow* — Laval · $22+ / hour · parue le 2026-08-18. | |
| 65 | +Exemple réel : *Représentant(e) des ventes – Roadshow* — Laval · $22+ / hour · parue le 2026-08-21. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Représentant(e) des ventes – Roadshow* — Laval · $22+ / h | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | −- **Offres en base** : 30 (dont **30 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | −- **Salaire** : 21/30 actives (70 %) | |
| 79 | −- **GPS** : 30/30 actives (100 %) | |
| 80 | −- **Mode** : 0/30 actives (0 %) | |
| 81 | −- **Parution** : 30/30 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:41 — trouvées 30, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 28 | |
| 77 | +- **Offres en base** : 32 (dont **32 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 23/32 actives (72 %) | |
| 79 | +- **GPS** : 32/32 actives (100 %) | |
| 80 | +- **Mode** : 0/32 actives (0 %) | |
| 81 | +- **Parution** : 32/32 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 32, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 87 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/broadsign.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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** : 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-19 03:41 — trouvées 4, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 82 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 4, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/broccolini.md
+14 −14
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,14 +36,14 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **22 offres actives** de la source (base live, 2026-08-22 22:14 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é) | 96 % | | |
| 46 | +| `description` — Description | texte complet (HTML nettoyé) | 95 % | | |
| 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 % | |
@@ -53,11 +53,11 @@ 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 | 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) | 96 % | | |
| 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 | −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 87 % | | |
| 60 | −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 96 % | | |
| 59 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 86 % | | |
| 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 % | |
@@ -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-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | −- **Offres en base** : 23 (dont **23 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | −- **Salaire** : 0/23 actives (0 %) | |
| 84 | −- **GPS** : 23/23 actives (100 %) | |
| 85 | −- **Mode** : 23/23 actives (100 %) | |
| 86 | −- **Parution** : 23/23 actives (100 %) | |
| 87 | −- **Dernier sync** : 2026-08-19 03:41 — trouvées 23, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 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-22 21:04 — trouvées 22, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/caaquebec.md
+10 −6
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **19 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **19 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -79,19 +79,23 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | 84 | - **Offres en base** : 19 (dont **19 actives**, 0 masquées comme doublons `dup_of`) |
| 85 | 85 | - **Salaire** : 4/19 actives (21 %) |
| 86 | 86 | - **GPS** : 19/19 actives (100 %) |
| 87 | 87 | - **Mode** : 0/19 actives (0 %) |
| 88 | 88 | - **Parution** : 19/19 actives (100 %) |
| 89 | −- **Dernier sync** : 2026-08-19 03:41 — trouvées 19, +0, ~8, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 89 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 19, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 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) | 1 | 2026-08-22 03:20 | | |
| 95 | 99 | |
| 96 | 100 | - 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;"` |
| 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/cae.md
+18 −14
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **55 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **56 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -46,8 +46,8 @@ Complétude mesurée sur les **55 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 | 87 % | | |
| 50 | −| `region` — Région | région administrative | 87 % | | |
| 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 % | |
@@ -58,7 +58,7 @@ Complétude mesurée sur les **55 offres actives** de la source (base live, 2026 | ||
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 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 % | |
@@ -79,19 +79,23 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 56 (dont **55 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 4/55 actives (7 %) | |
| 86 | −- **GPS** : 51/55 actives (93 %) | |
| 87 | −- **Mode** : 0/55 actives (0 %) | |
| 88 | −- **Parution** : 55/55 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:42 — trouvées 55, +0, ~27, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 30 | |
| 84 | +- **Offres en base** : 59 (dont **56 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 4/56 actives (7 %) | |
| 86 | +- **GPS** : 52/56 actives (93 %) | |
| 87 | +- **Mode** : 0/56 actives (0 %) | |
| 88 | +- **Parution** : 56/56 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 56, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 89 | |
| 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) | 1 | 2026-08-22 03:20 | | |
| 95 | 99 | |
| 96 | 100 | - 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;"` |
| 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`. |
added
docs/connecteurs/californiaclosets.md
+109 −0
@@ -0,0 +1,109 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/californiaclosets.md | |
| 7 | +Rôle : Fiche connecteur — California Closets (employeur direct, ATS smartrecruiters) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# California Closets (`californiaclosets`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`smartrecruiters`](ats-smartrecruiters.md) · Statut registre : actif · Connecteur : `jobka/connectors/californiaclosets.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [California Closets]() | |
| 20 | +- **Page carrières** : https://jobs.smartrecruiters.com/company/californiaclosets | |
| 21 | +- **Secteurs** : Fabrication | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-smartrecruiters.md`](ats-smartrecruiters.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `COMPANY` | `californiaclosets` | | |
| 33 | +| `EMPLOYER` | `California Closets` | | |
| 34 | +- **Throttle** : 0.7 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 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. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 72 | + | |
| 73 | +| Variable | Défaut | | |
| 74 | +|---|---| | |
| 75 | +| `JOBKA_SR_DETAIL_LIMIT` | `300` | | |
| 76 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 77 | + | |
| 78 | +## Volumétrie & complétude live | |
| 79 | + | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | + | |
| 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-22 21:04 — trouvées 1, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 89 | + | |
| 90 | +## Erreurs & dépannage | |
| 91 | + | |
| 92 | +Aucune erreur dans `sync_log` pour cette source. | |
| 93 | + | |
| 94 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync californiaclosets` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='californiaclosets' ORDER BY ts DESC LIMIT 5;"` | |
| 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`. | |
| 96 | + | |
| 97 | +## Licence / conformité | |
| 98 | + | |
| 99 | +**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 California Closets » 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. | |
| 100 | + | |
| 101 | +## Historique | |
| 102 | + | |
| 103 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 104 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 105 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 106 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 107 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 108 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 109 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/canada_global.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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-19 03:42 — trouvées 1, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 82 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 1, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/canadiantirecorporation.md
+11 −7
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **9 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 : *Assistant Manager* — Lévis · Our typical hiring range is between $34,800 and $43,500. Salary decisions are also depende… · parue le 2026-07-27. | |
| 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. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,19 +79,23 @@ Exemple réel : *Assistant Manager* — Lévis · Our typical hiring range is be | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | 84 | - **Offres en base** : 9 (dont **9 actives**, 0 masquées comme doublons `dup_of`) |
| 85 | 85 | - **Salaire** : 5/9 actives (56 %) |
| 86 | 86 | - **GPS** : 9/9 actives (100 %) |
| 87 | 87 | - **Mode** : 0/9 actives (0 %) |
| 88 | 88 | - **Parution** : 9/9 actives (100 %) |
| 89 | −- **Dernier sync** : 2026-08-19 03:42 — trouvées 9, +0, ~3, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 89 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 9, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 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) | 1 | 2026-08-22 03:20 | | |
| 95 | 99 | |
| 96 | 100 | - 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;"` |
| 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/capreit.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -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-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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-19 03:42 — trouvées 10, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 10, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/cascades.md
+13 −13
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **100 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **100 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -48,15 +48,15 @@ Complétude mesurée sur les **100 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 | 12 % | | |
| 52 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 12 % | | |
| 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 | 14 % | | |
| 52 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 11 % | | |
| 53 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 75 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 75 % | | |
| 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 | 0 % | |
| 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é, …) | 63 % | | |
| 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 : *Électrotechnicien de nuit* — Granby · Salaire horaire de 43 | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | −- **Offres en base** : 101 (dont **100 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | −- **Salaire** : 77/100 actives (77 %) | |
| 82 | +- **Offres en base** : 109 (dont **100 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | +- **Salaire** : 75/100 actives (75 %) | |
| 84 | 84 | - **GPS** : 100/100 actives (100 %) |
| 85 | −- **Mode** : 12/100 actives (12 %) | |
| 85 | +- **Mode** : 14/100 actives (14 %) | |
| 86 | 86 | - **Parution** : 0/100 actives (0 %) |
| 87 | −- **Dernier sync** : 2026-08-19 03:42 — trouvées 100, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 15 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 100, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 74 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/cdpq.md
+12 −12
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **25 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -51,7 +51,7 @@ 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 / … | 86 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 84 % | | |
| 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 % | |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **28 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 : *Analyste, Divulgation financière – Comptabilité** — Montréal · ∅ · parue le 2026-08-18. | |
| 67 | +Exemple réel : *Analyste principal(e), Capital de risque* — Montréal · ∅ · parue le 2026-08-21. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,15 +79,15 @@ Exemple réel : *Analyste, Divulgation financière – Comptabilité** — Montr | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 28 (dont **28 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 0/28 actives (0 %) | |
| 86 | −- **GPS** : 28/28 actives (100 %) | |
| 87 | −- **Mode** : 0/28 actives (0 %) | |
| 88 | −- **Parution** : 28/28 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:42 — trouvées 28, +0, ~20, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 84 | +- **Offres en base** : 29 (dont **25 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 0/25 actives (0 %) | |
| 86 | +- **GPS** : 25/25 actives (100 %) | |
| 87 | +- **Mode** : 0/25 actives (0 %) | |
| 88 | +- **Parution** : 25/25 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 25, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
added
docs/connecteurs/centremultiethniquedequbec.md
+109 −0
@@ -0,0 +1,109 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/centremultiethniquedequbec.md | |
| 7 | +Rôle : Fiche connecteur — Centre multiethnique de Québec (employeur direct, ATS smartrecruiters) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Centre multiethnique de Québec (`centremultiethniquedequbec`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`smartrecruiters`](ats-smartrecruiters.md) · Statut registre : actif · Connecteur : `jobka/connectors/centremultiethniquedequbec.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Centre multiethnique de Québec]() | |
| 20 | +- **Page carrières** : https://jobs.smartrecruiters.com/company/centremultiethniquedequbec | |
| 21 | +- **Secteurs** : Services sociaux | |
| 22 | +- **Région** : Québec | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-smartrecruiters.md`](ats-smartrecruiters.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `COMPANY` | `centremultiethniquedequbec` | | |
| 33 | +| `EMPLOYER` | `Centre multiethnique de Québec` | | |
| 34 | +- **Throttle** : 0.7 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 100 % | | |
| 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é, …) | 0 % | | |
| 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 : *Intervenant.e à l’accueil et à l’installation des personnes réfugiées - volet logement* — Québec · Salaire horaire de base : $20.75 · parue le 2022-05-11. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 72 | + | |
| 73 | +| Variable | Défaut | | |
| 74 | +|---|---| | |
| 75 | +| `JOBKA_SR_DETAIL_LIMIT` | `300` | | |
| 76 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 77 | + | |
| 78 | +## Volumétrie & complétude live | |
| 79 | + | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | + | |
| 82 | +- **Offres en base** : 1 (dont **1 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | +- **Salaire** : 1/1 actives (100 %) | |
| 84 | +- **GPS** : 1/1 actives (100 %) | |
| 85 | +- **Mode** : 1/1 actives (100 %) | |
| 86 | +- **Parution** : 1/1 actives (100 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 1, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 89 | + | |
| 90 | +## Erreurs & dépannage | |
| 91 | + | |
| 92 | +Aucune erreur dans `sync_log` pour cette source. | |
| 93 | + | |
| 94 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync centremultiethniquedequbec` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='centremultiethniquedequbec' ORDER BY ts DESC LIMIT 5;"` | |
| 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`. | |
| 96 | + | |
| 97 | +## Licence / conformité | |
| 98 | + | |
| 99 | +**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 Centre multiethnique de Québec » 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. | |
| 100 | + | |
| 101 | +## Historique | |
| 102 | + | |
| 103 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 104 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 105 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 106 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 107 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 108 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 109 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/cfmontreal.md
+5 −5
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -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-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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** : 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-19 03:42 — trouvées 8, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:04 — trouvées 8, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/cgi.md
+20 −16
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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,31 +40,31 @@ Généré : 2026-08-19 05:40 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 **127 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 43 | +Complétude mesurée sur les **316 offres actives** de la source (base live, 2026-08-22 22:14 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é) | 9 % | | |
| 50 | +| `description` — Description | texte complet (HTML nettoyé) | 100 % | | |
| 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 / … | 8 % | | |
| 56 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 9 % | | |
| 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 | 60 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 66 % | | |
| 64 | −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 0 % | | |
| 63 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 59 % | | |
| 64 | +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 2 % | | |
| 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) | 0 % | | |
| 67 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 95 % | | |
| 68 | 68 | |
| 69 | 69 | Exemple réel : *Conseiller en architecture de solution Infrastructure Cloud AWS* — Québec · ∅ · parue le ∅. |
| 70 | 70 | |
@@ -81,19 +81,23 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 84 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 85 | 85 | |
| 86 | −- **Offres en base** : 127 (dont **127 actives**, 0 masquées comme doublons `dup_of`) | |
| 87 | −- **Salaire** : 0/127 actives (0 %) | |
| 88 | −- **GPS** : 0/127 actives (0 %) | |
| 89 | −- **Mode** : 0/127 actives (0 %) | |
| 90 | −- **Parution** : 0/127 actives (0 %) | |
| 91 | −- **Dernier sync** : 2026-08-19 05:11 — trouvées 127, +127, ~0, -0 | |
| 92 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 86 | +- **Offres en base** : 336 (dont **316 actives**, 0 masquées comme doublons `dup_of`) | |
| 87 | +- **Salaire** : 0/316 actives (0 %) | |
| 88 | +- **GPS** : 300/316 actives (95 %) | |
| 89 | +- **Mode** : 0/316 actives (0 %) | |
| 90 | +- **Parution** : 0/316 actives (0 %) | |
| 91 | +- **Dernier sync** : 2026-08-22 21:06 — trouvées 315, +0, ~0, -0 | |
| 92 | +- **Syncs enregistrés** (`sync_log`) : 63 | |
| 93 | 93 | |
| 94 | 94 | ## Erreurs & dépannage |
| 95 | 95 | |
| 96 | −Aucune erreur dans `sync_log` pour cette source. | |
| 96 | +Erreurs relevées dans `sync_log` : | |
| 97 | + | |
| 98 | +| Erreur | Occurrences | Dernière fois | | |
| 99 | +|---|---|---| | |
| 100 | +| SCRAPFLY_API_KEY manquant (voir .env) | 1 | 2026-08-19 06:36 | | |
| 97 | 101 | |
| 98 | 102 | - 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;"` |
| 99 | 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/charger_logistics_inc.md
+12 −12
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -49,7 +49,7 @@ Complétude mesurée sur les **1 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 | 0 % | |
| 54 | 54 | | `salary_label` — Libellé salaire | texte salarial original | 0 % | |
| 55 | 55 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | |
@@ -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 : *Security Guard (Trucking Yard)* — Québec · ∅ · parue le 2026-08-14. | |
| 65 | +Exemple réel : *Security Guard (Trucking Yard)* — Québec · ∅ · parue le 2026-08-21. | |
| 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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-19 03:42 — trouvées 1, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 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-22 21:06 — trouvées 2, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
added
docs/connecteurs/charlotte_tilbury.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/charlotte_tilbury.md | |
| 7 | +Rôle : Fiche connecteur — Charlotte Tilbury (employeur direct, ATS workable) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Charlotte Tilbury (`charlotte_tilbury`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workable`](ats-workable.md) · Statut registre : actif · Connecteur : `jobka/connectors/charlotte_tilbury.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Charlotte Tilbury]() | |
| 20 | +- **Page carrières** : https://apply.workable.com/charlotte-tilbury | |
| 21 | +- **Secteurs** : Commerce de détail | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workable.md`](ats-workable.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Charlotte Tilbury` | | |
| 33 | +| `ORG` | `charlotte-tilbury` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 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) | 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 : *Brand Expert - Montreal,Laval Qc (Temps Partiel)* — Montréal · ∅ · parue le 2026-06-08. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:06 — trouvées 2, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync charlotte_tilbury` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='charlotte_tilbury' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Charlotte Tilbury » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/chu_quebec.md
+14 −14
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **60 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **59 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -51,9 +51,9 @@ Complétude mesurée sur les **60 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 % | | |
| 55 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 10 % | | |
| 56 | −| `salary_label` — Libellé salaire | texte salarial original | 10 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 56 % | | |
| 55 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 7 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 7 % | | |
| 57 | 57 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 2 % | |
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 59 | 59 | | `date_posted` — Date de parution | ISO 8601 | 100 % | |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **60 offres actives** de la source (base live, 2026 | ||
| 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 | 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. |
| 68 | 68 | |
@@ -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-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 60 (dont **60 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 6/60 actives (10 %) | |
| 86 | −- **GPS** : 0/60 actives (0 %) | |
| 87 | −- **Mode** : 0/60 actives (0 %) | |
| 88 | −- **Parution** : 60/60 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 04:51 — trouvées 60, +60, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 84 | +- **Offres en base** : 64 (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-22 21:06 — trouvées 59, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/chum.md
+15 −15
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **25 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **29 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -51,20 +51,20 @@ Complétude mesurée sur les **25 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 / … | 12 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 10 % | | |
| 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) | 4 % | | |
| 57 | +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 3 % | | |
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 96 % | | |
| 61 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 97 % | | |
| 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 : *Chef de service – Chef de service Systèmes d’information et gestion de projets* — Montréal · ∅ · parue le 2026-08-17. | |
| 67 | +Exemple réel : *Technicien(ne) en administration – Laboratoire Optilab* — Montréal · ∅ · parue le 2026-08-21. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,15 +79,15 @@ Exemple réel : *Chef de service – Chef de service Systèmes d’information e | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 25 (dont **25 actives**, 24 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 0/25 actives (0 %) | |
| 86 | −- **GPS** : 0/25 actives (0 %) | |
| 87 | −- **Mode** : 0/25 actives (0 %) | |
| 88 | −- **Parution** : 25/25 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 04:52 — trouvées 25, +25, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 84 | +- **Offres en base** : 34 (dont **29 actives**, 27 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 0/29 actives (0 %) | |
| 86 | +- **GPS** : 29/29 actives (100 %) | |
| 87 | +- **Mode** : 0/29 actives (0 %) | |
| 88 | +- **Parution** : 29/29 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:06 — trouvées 29, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/churchdwight.md
+10 −6
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -79,19 +79,23 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | 84 | - **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`) |
| 85 | 85 | - **Salaire** : 0/6 actives (0 %) |
| 86 | 86 | - **GPS** : 6/6 actives (100 %) |
| 87 | 87 | - **Mode** : 0/6 actives (0 %) |
| 88 | 88 | - **Parution** : 6/6 actives (100 %) |
| 89 | −- **Dernier sync** : 2026-08-19 03:42 — trouvées 6, +0, ~2, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 89 | +- **Dernier sync** : 2026-08-22 21:06 — trouvées 6, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 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) | 1 | 2026-08-22 03:22 | | |
| 95 | 99 | |
| 96 | 100 | - 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;"` |
| 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/cibc.md
+13 −12
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **65 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **56 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -50,7 +50,7 @@ Complétude mesurée sur les **65 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 | 3 % | | |
| 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 | 0 % | |
| 56 | 56 | | `salary_label` — Libellé salaire | texte salarial original | 0 % | |
@@ -64,7 +64,7 @@ Complétude mesurée sur les **65 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 : *Relationship Manager, Commercial Banking-Bilingual* — Rouyn-Noranda · ∅ · parue le 2026-08-18. | |
| 67 | +Exemple réel : *Investment Specialist - Montréal - Bilingual* — Saint Leonard · ∅ · parue le 2026-08-21. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,15 +79,15 @@ Exemple réel : *Relationship Manager, Commercial Banking-Bilingual* — Rouyn-N | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 69 (dont **65 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 0/65 actives (0 %) | |
| 86 | −- **GPS** : 65/65 actives (100 %) | |
| 87 | −- **Mode** : 2/65 actives (3 %) | |
| 88 | −- **Parution** : 65/65 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:44 — trouvées 65, +0, ~61, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 84 | +- **Offres en base** : 82 (dont **56 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 0/56 actives (0 %) | |
| 86 | +- **GPS** : 56/56 actives (100 %) | |
| 87 | +- **Mode** : 2/56 actives (4 %) | |
| 88 | +- **Parution** : 56/56 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:06 — trouvées 56, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
@@ -95,6 +95,7 @@ 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 | 99 | | HTTPSConnectionPool(host='cibc.wd3.myworkdayjobs.com', port=443): Read timed out. (read ti… | 1 | 2026-08-17 21:23 | |
| 99 | 100 | |
| 100 | 101 | - 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/cima2.md
+12 −12
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **221 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **239 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -48,7 +48,7 @@ Complétude mesurée sur les **221 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 | 84 % | | |
| 51 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 85 % | | |
| 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 **221 offres actives** de la source (base live, 202 | ||
| 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 : *Technicienne ou technicien, inspection de structures de télécommunications - Montréal ou L…* — Montréal · ∅ · parue le 2026-08-18. | |
| 65 | +Exemple réel : *Conseillère ou Conseiller senior en santé et sécurité* — Québec · ∅ · parue le 2026-08-21. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -77,15 +77,15 @@ Exemple réel : *Technicienne ou technicien, inspection de structures de téléc | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | −- **Offres en base** : 231 (dont **221 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | −- **Salaire** : 0/221 actives (0 %) | |
| 84 | −- **GPS** : 221/221 actives (100 %) | |
| 85 | −- **Mode** : 185/221 actives (84 %) | |
| 86 | −- **Parution** : 221/221 actives (100 %) | |
| 87 | −- **Dernier sync** : 2026-08-19 03:44 — trouvées 221, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 82 | +- **Offres en base** : 298 (dont **239 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | +- **Salaire** : 0/239 actives (0 %) | |
| 84 | +- **GPS** : 239/239 actives (100 %) | |
| 85 | +- **Mode** : 204/239 actives (85 %) | |
| 86 | +- **Parution** : 239/239 actives (100 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 21:06 — trouvées 239, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
added
docs/connecteurs/cineplex.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/cineplex.md | |
| 7 | +Rôle : Fiche connecteur — Cineplex (employeur direct, ATS workday) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Cineplex (`cineplex`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workday`](ats-workday.md) · Statut registre : actif · Connecteur : `jobka/connectors/cineplex.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Cineplex]() | |
| 20 | +- **Page carrières** : https://cineplex.wd3.myworkdayjobs.com/Cineplex | |
| 21 | +- **Secteurs** : Divertissement | |
| 22 | +- **Région** : Gatineau | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workday.md`](ats-workday.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Cineplex` | | |
| 33 | +| `HOST` | `wd3` | | |
| 34 | +| `SITE` | `Cineplex` | | |
| 35 | +| `TENANT` | `cineplex` | | |
| 36 | +- **Throttle** : 0.7 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-08-22 22:14 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 | 92 % | | |
| 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 | 8 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | | |
| 55 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 4 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 4 % | | |
| 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é, …) | 42 % | | |
| 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) | 100 % | | |
| 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. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_WORKDAY_DETAIL_LIMIT` | `300` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | + | |
| 84 | +- **Offres en base** : 24 (dont **24 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 1/24 actives (4 %) | |
| 86 | +- **GPS** : 24/24 actives (100 %) | |
| 87 | +- **Mode** : 2/24 actives (8 %) | |
| 88 | +- **Parution** : 24/24 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:06 — trouvées 24, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- 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 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Cineplex » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/circlek.md
+20 −14
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **1012 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **1019 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -58,13 +58,13 @@ Complétude mesurée sur les **1012 offres actives** de la source (base live, 20 | ||
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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 | −| `apply_url` — Candidature | lien de candidature directe | 30 % | | |
| 64 | +| `apply_url` — Candidature | lien de candidature directe | 100 % | | |
| 65 | 65 | | `gps` — GPS | lat/lng (géocodage sans invention) | 63 % | |
| 66 | 66 | |
| 67 | −Exemple réel : *Assistant-Gérant* — Sherbrooke · Salaire de jour : $17.75 (prime incluse**) · parue le 2026-08-19. | |
| 67 | +Exemple réel : *Préposé service à la clientèle de nuit -ACT* — ∅ · Salaire (nuit) : 19,60$/h (Prime incluse**) · parue le 2026-08-22. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,19 +79,25 @@ Exemple réel : *Assistant-Gérant* — Sherbrooke · Salaire de jour : $17.75 ( | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 1039 (dont **1012 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 616/1012 actives (61 %) | |
| 86 | −- **GPS** : 642/1012 actives (63 %) | |
| 87 | −- **Mode** : 2/1012 actives (0 %) | |
| 88 | −- **Parution** : 1012/1012 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:51 — trouvées 1012, +0, ~432, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 84 | +- **Offres en base** : 1144 (dont **1019 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 622/1019 actives (61 %) | |
| 86 | +- **GPS** : 642/1019 actives (63 %) | |
| 87 | +- **Mode** : 2/1019 actives (0 %) | |
| 88 | +- **Parution** : 1019/1019 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:07 — trouvées 1019, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 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) | 2 | 2026-08-22 05:04 | | |
| 99 | +| 520 Server Error: <none> for url: https://circlek.wd3.myworkdayjobs.com/wday/cxs/circlek/C… | 1 | 2026-08-22 02:01 | | |
| 100 | +| 503 Server Error: Service Unavailable for url: https://circlek.wd3.myworkdayjobs.com/wday/… | 1 | 2026-08-19 16:57 | | |
| 95 | 101 | |
| 96 | 102 | - 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;"` |
| 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/cirquedusoleil.md
+16 −16
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -44,25 +44,25 @@ Complétude mesurée sur les **22 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 | 86 % | | |
| 48 | −| `region` — Région | région administrative | 86 % | | |
| 47 | +| `city` — Ville | municipalité normalisée | 88 % | | |
| 48 | +| `region` — Région | région administrative | 88 % | | |
| 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 / … | 92 % | | |
| 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 | 56 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 82 % | | |
| 59 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 79 % | | |
| 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) | 86 % | | |
| 63 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 88 % | | |
| 64 | 64 | |
| 65 | −Exemple réel : *Vice-président(e), Marketing – Spectacles internationaux et Amériques \| Vice President Ma…* — ∅ · ∅ · parue le 2026-08-14. | |
| 65 | +Exemple réel : *Responsable du développement de produits – Produits de consommation \| Product Development…* — Montréal · ∅ · parue le 2026-08-20. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Vice-président(e), Marketing – Spectacles internationaux et | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | −- **Offres en base** : 22 (dont **22 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | −- **Salaire** : 0/22 actives (0 %) | |
| 79 | −- **GPS** : 19/22 actives (86 %) | |
| 80 | −- **Mode** : 22/22 actives (100 %) | |
| 81 | −- **Parution** : 22/22 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:51 — trouvées 22, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 77 | +- **Offres en base** : 25 (dont **24 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 0/24 actives (0 %) | |
| 79 | +- **GPS** : 21/24 actives (88 %) | |
| 80 | +- **Mode** : 24/24 actives (100 %) | |
| 81 | +- **Parution** : 24/24 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:07 — trouvées 24, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/cisss_abitibi.md
+12 −12
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **140 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -51,7 +51,7 @@ Complétude mesurée sur les **141 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 / … | 23 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 24 % | | |
| 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 % | |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **141 offres actives** de la source (base live, 202 | ||
| 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 | 67 | Exemple réel : *Chef de service de l’unité multiclientèle et continuum mère-enfant MRC Témiscamingue* — Rouyn-Noranda · ∅ · parue le 2026-08-18. |
| 68 | 68 | |
@@ -79,15 +79,15 @@ Exemple réel : *Chef de service de l’unité multiclientèle et continuum mèr | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 141 (dont **141 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 0/141 actives (0 %) | |
| 86 | −- **GPS** : 0/141 actives (0 %) | |
| 87 | −- **Mode** : 0/141 actives (0 %) | |
| 88 | −- **Parution** : 141/141 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 04:55 — trouvées 141, +141, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 84 | +- **Offres en base** : 141 (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-22 21:08 — trouvées 140, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/cisss_chaudiere_appalaches.md
+16 −16
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **112 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **115 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -51,20 +51,20 @@ Complétude mesurée sur les **112 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 / … | 38 % | | |
| 55 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 8 % | | |
| 56 | −| `salary_label` — Libellé salaire | texte salarial original | 8 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 36 % | | |
| 55 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 9 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 9 % | | |
| 57 | 57 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 2 % | |
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 76 % | | |
| 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 : *Directeur médical Optilab et Chef du département clinique de médecine de laboratoire* — Lévis · Classe G (275 102$ annuel) · parue le 2026-08-12. | |
| 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. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,15 +79,15 @@ Exemple réel : *Directeur médical Optilab et Chef du département clinique de | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 112 (dont **112 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 9/112 actives (8 %) | |
| 86 | −- **GPS** : 0/112 actives (0 %) | |
| 87 | −- **Mode** : 0/112 actives (0 %) | |
| 88 | −- **Parution** : 112/112 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 04:59 — trouvées 112, +112, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 84 | +- **Offres en base** : 118 (dont **115 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 10/115 actives (9 %) | |
| 86 | +- **GPS** : 115/115 actives (100 %) | |
| 87 | +- **Mode** : 0/115 actives (0 %) | |
| 88 | +- **Parution** : 115/115 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 115, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **124 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **132 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -51,20 +51,20 @@ Complétude mesurée sur les **124 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 / … | 55 % | | |
| 55 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 4 % | | |
| 56 | −| `salary_label` — Libellé salaire | texte salarial original | 4 % | | |
| 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 % | | |
| 57 | 57 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | |
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 73 % | | |
| 61 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 74 % | | |
| 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 : *CHEF DE L’ADMINISTRATION DES PROGRAMMES MILIEUX FAVORABLES À LA SANTÉ ET DÉVELOPPEMENT DES…* — Joliette · Minimum de la classe : 96 770 $ annuel · parue le 2026-08-17. | |
| 67 | +Exemple réel : *Agent ou agente de la gestion du personnel – Relations de travail* — Joliette · Salaire : taux horaire de 30.56 $ à 52.37 $, selon l’expérience · parue le 2026-08-21. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,15 +79,15 @@ Exemple réel : *CHEF DE L’ADMINISTRATION DES PROGRAMMES MILIEUX FAVORABLES À | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 124 (dont **124 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 5/124 actives (4 %) | |
| 86 | −- **GPS** : 0/124 actives (0 %) | |
| 87 | −- **Mode** : 0/124 actives (0 %) | |
| 88 | −- **Parution** : 124/124 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 05:35 — trouvées 124, +124, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 84 | +- **Offres en base** : 134 (dont **132 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 6/132 actives (5 %) | |
| 86 | +- **GPS** : 132/132 actives (100 %) | |
| 87 | +- **Mode** : 0/132 actives (0 %) | |
| 88 | +- **Parution** : 132/132 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 132, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/cisss_laurentides.md
+15 −15
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **130 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **142 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -52,19 +52,19 @@ Complétude mesurée sur les **130 offres actives** de la source (base live, 202 | ||
| 52 | 52 | | `postal_code` — Code postal | code postal si publié | 0 % | |
| 53 | 53 | | `work_mode` — Mode | presentiel / hybride / teletravail | 1 % | |
| 54 | 54 | | `employment_type` — Type | temps_plein / temps_partiel / … | 23 % | |
| 55 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 12 % | | |
| 56 | −| `salary_label` — Libellé salaire | texte salarial original | 12 % | | |
| 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 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 70 % | | |
| 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 | 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 : *Bourse psychothérapie volet professionnel* — Saint-Jérôme · 30 000$ (formation prescrite de 900 heures et moins · parue le 2026-08-18. | |
| 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. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,15 +79,15 @@ Exemple réel : *Bourse psychothérapie volet professionnel* — Saint-Jérôme | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 130 (dont **130 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 15/130 actives (12 %) | |
| 86 | −- **GPS** : 0/130 actives (0 %) | |
| 87 | −- **Mode** : 1/130 actives (1 %) | |
| 88 | −- **Parution** : 130/130 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 05:39 — trouvées 130, +130, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 84 | +- **Offres en base** : 148 (dont **142 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 16/142 actives (11 %) | |
| 86 | +- **GPS** : 142/142 actives (100 %) | |
| 87 | +- **Mode** : 1/142 actives (1 %) | |
| 88 | +- **Parution** : 142/142 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 142, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/cisss_laval.md
+11 −11
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **149 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **149 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -54,7 +54,7 @@ Complétude mesurée sur les **149 offres actives** de la source (base live, 202 | ||
| 54 | 54 | | `employment_type` — Type | temps_plein / temps_partiel / … | 10 % | |
| 55 | 55 | | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 1 % | |
| 56 | 56 | | `salary_label` — Libellé salaire | texte salarial original | 1 % | |
| 57 | −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 46 % | | |
| 57 | +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 45 % | | |
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 59 | 59 | | `date_posted` — Date de parution | ISO 8601 | 100 % | |
| 60 | 60 | | `date_deadline` — Date limite | date limite pour postuler | 100 % | |
@@ -62,9 +62,9 @@ Complétude mesurée sur les **149 offres actives** de la source (base live, 202 | ||
| 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 : *CHEF DE SERVICE DE LA PERMANENCE \| DPDI-TSA-DP \| REQ26-5489* — Laval · 91 837$ à 119 388$ · parue le 2026-08-14. | |
| 67 | +Exemple réel : *CHEF DE SERVICE RELATIONS DE TRAVAIL – DRH, REQ26-5439* — Laval · 101 965$ à 132 555$ · parue le 2026-08-21. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,15 +79,15 @@ Exemple réel : *CHEF DE SERVICE DE LA PERMANENCE \| DPDI-TSA-DP \| REQ26-5489* | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 149 (dont **149 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 1/149 actives (1 %) | |
| 86 | −- **GPS** : 0/149 actives (0 %) | |
| 84 | +- **Offres en base** : 153 (dont **149 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 2/149 actives (1 %) | |
| 86 | +- **GPS** : 149/149 actives (100 %) | |
| 87 | 87 | - **Mode** : 0/149 actives (0 %) |
| 88 | 88 | - **Parution** : 149/149 actives (100 %) |
| 89 | −- **Dernier sync** : 2026-08-19 05:05 — trouvées 149, +149, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 89 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 149, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/cisss_outaouais.md
+14 −14
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **101 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **108 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -51,20 +51,20 @@ Complétude mesurée sur les **101 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 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 7 % | | |
| 55 | 55 | | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 31 % | |
| 56 | 56 | | `salary_label` — Libellé salaire | texte salarial original | 31 % | |
| 57 | 57 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | |
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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 | −| `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 : *INTÉRIM – Chef de service du bénévolat et de la satisfaction à la clientèle (DTPQ)* — Gatineau · Minimum : 91 837 $ · parue le 2026-08-12. | |
| 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. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,15 +79,15 @@ Exemple réel : *INTÉRIM – Chef de service du bénévolat et de la satisfacti | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 101 (dont **101 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 31/101 actives (31 %) | |
| 86 | −- **GPS** : 0/101 actives (0 %) | |
| 87 | −- **Mode** : 0/101 actives (0 %) | |
| 88 | −- **Parution** : 101/101 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 05:09 — trouvées 101, +101, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 84 | +- **Offres en base** : 108 (dont **108 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 33/108 actives (31 %) | |
| 86 | +- **GPS** : 108/108 actives (100 %) | |
| 87 | +- **Mode** : 0/108 actives (0 %) | |
| 88 | +- **Parution** : 108/108 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 108, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **23 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 42 | +Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 43 | 43 | |
| 44 | 44 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 45 | 45 | |---|---|---| |
@@ -52,7 +52,7 @@ Complétude mesurée sur les **23 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 / … | 9 % | | |
| 55 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 4 % | | |
| 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 **23 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 : *Chef de service - aide à domicile - secteur Pointe-Aux-Trembles (Intérim)* — Montréal · ∅ · parue le 2026-08-18. | |
| 68 | +Exemple réel : *Travailleur(euse) social(e) - Urgence psychiatrique (IUSMM)* — Montréal · ∅ · parue le 2026-08-19. | |
| 69 | 69 | |
| 70 | 70 | ## Fréquence & budgets |
| 71 | 71 | |
@@ -80,15 +80,15 @@ Exemple réel : *Chef de service - aide à domicile - secteur Pointe-Aux-Tremble | ||
| 80 | 80 | |
| 81 | 81 | ## Volumétrie & complétude live |
| 82 | 82 | |
| 83 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 83 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 84 | 84 | |
| 85 | −- **Offres en base** : 23 (dont **23 actives**, 14 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-08-19 03:51 — trouvées 23, +0, ~0, -0 | |
| 91 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 85 | +- **Offres en base** : 25 (dont **24 actives**, 14 masquées comme doublons `dup_of`) | |
| 86 | +- **Salaire** : 0/24 actives (0 %) | |
| 87 | +- **GPS** : 24/24 actives (100 %) | |
| 88 | +- **Mode** : 0/24 actives (0 %) | |
| 89 | +- **Parution** : 24/24 actives (100 %) | |
| 90 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 24, +0, ~0, -0 | |
| 91 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 92 | 92 | |
| 93 | 93 | ## Erreurs & dépannage |
| 94 | 94 | |
added
docs/connecteurs/cloudchamberfr.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/cloudchamberfr.md | |
| 7 | +Rôle : Fiche connecteur — Cloud Chamber Montréal (employeur direct, ATS greenhouse) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Cloud Chamber Montréal (`cloudchamberfr`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`greenhouse`](ats-greenhouse.md) · Statut registre : actif · Connecteur : `jobka/connectors/cloudchamberfr.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Cloud Chamber Montréal]() | |
| 20 | +- **Page carrières** : https://job-boards.greenhouse.io/cloudchamberfr | |
| 21 | +- **Secteurs** : Jeu vidéo | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-greenhouse.md`](ats-greenhouse.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `cloudchamberfr` | | |
| 33 | +| `EMPLOYER` | `Cloud Chamber Montréal` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **13 offres actives** de la source (base live, 2026-08-22 22:14 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 / … | 8 % | | |
| 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 | 0 % | | |
| 63 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 64 | + | |
| 65 | +Exemple réel : *Chef·fe d’équipe animation* — Montréal · ∅ · parue le 2026-08-19. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 13 (dont **13 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 0/13 actives (0 %) | |
| 79 | +- **GPS** : 13/13 actives (100 %) | |
| 80 | +- **Mode** : 0/13 actives (0 %) | |
| 81 | +- **Parution** : 13/13 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 13, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync cloudchamberfr` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cloudchamberfr' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Cloud Chamber Montréal » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/clubmonaco.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/clubmonaco.md | |
| 7 | +Rôle : Fiche connecteur — Club Monaco (employeur direct, ATS greenhouse) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Club Monaco (`clubmonaco`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`greenhouse`](ats-greenhouse.md) · Statut registre : actif · Connecteur : `jobka/connectors/clubmonaco.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Club Monaco]() | |
| 20 | +- **Page carrières** : https://job-boards.greenhouse.io/clubmonaco | |
| 21 | +- **Secteurs** : Commerce de détail | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-greenhouse.md`](ats-greenhouse.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `clubmonaco` | | |
| 33 | +| `EMPLOYER` | `Club Monaco` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 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) | 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 | 0 % | | |
| 63 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 64 | + | |
| 65 | +Exemple réel : *Assistant Manager/Gestionnaire adjoint à temps plein* — Laval · ∅ · parue le 2026-08-05. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:08 — trouvées 1, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync clubmonaco` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='clubmonaco' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Club Monaco » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/cogeco.md
+21 −16
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **45 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -46,11 +46,11 @@ Complétude mesurée sur les **50 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 | 92 % | | |
| 50 | −| `region` — Région | région administrative | 52 % | | |
| 49 | +| `city` — Ville | municipalité normalisée | 89 % | | |
| 50 | +| `region` — Région | région administrative | 56 % | | |
| 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 | 4 % | | |
| 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 | 18 % | |
| 56 | 56 | | `salary_label` — Libellé salaire | texte salarial original | 18 % | |
@@ -58,11 +58,11 @@ Complétude mesurée sur les **50 offres actives** de la source (base live, 2026 | ||
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 38 % | | |
| 61 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 40 % | | |
| 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) | 56 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 60 % | | |
| 66 | 66 | |
| 67 | 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. |
| 68 | 68 | |
@@ -79,19 +79,24 @@ 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-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 50 (dont **50 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 9/50 actives (18 %) | |
| 86 | −- **GPS** : 28/50 actives (56 %) | |
| 87 | −- **Mode** : 2/50 actives (4 %) | |
| 88 | −- **Parution** : 50/50 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:52 — trouvées 50, +0, ~25, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 84 | +- **Offres en base** : 53 (dont **45 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 8/45 actives (18 %) | |
| 86 | +- **GPS** : 27/45 actives (60 %) | |
| 87 | +- **Mode** : 1/45 actives (2 %) | |
| 88 | +- **Parution** : 45/45 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 45, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 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) | 1 | 2026-08-22 03:23 | | |
| 99 | +| 503 Server Error: Service Unavailable for url: https://cogeco.wd3.myworkdayjobs.com/wday/c… | 1 | 2026-08-19 16:57 | | |
| 95 | 100 | |
| 96 | 101 | - 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;"` |
| 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/cohere.md
+15 −15
@@ -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-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **44 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -44,14 +44,14 @@ Complétude mesurée sur les **46 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 | 17 % | | |
| 48 | −| `region` — Région | région administrative | 4 % | | |
| 47 | +| `city` — Ville | municipalité normalisée | 16 % | | |
| 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 | 16 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 16 % | | |
| 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 % | |
@@ -60,7 +60,7 @@ Complétude mesurée sur les **46 offres actives** de la source (base live, 2026 | ||
| 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) | 37 % | | |
| 63 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 36 % | | |
| 64 | 64 | |
| 65 | 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. |
| 66 | 66 | |
@@ -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-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | −- **Offres en base** : 46 (dont **46 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | −- **Salaire** : 8/46 actives (17 %) | |
| 79 | −- **GPS** : 17/46 actives (37 %) | |
| 80 | −- **Mode** : 46/46 actives (100 %) | |
| 81 | −- **Parution** : 46/46 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:52 — trouvées 46, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 27 | |
| 77 | +- **Offres en base** : 47 (dont **44 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 7/44 actives (16 %) | |
| 79 | +- **GPS** : 16/44 actives (36 %) | |
| 80 | +- **Mode** : 44/44 actives (100 %) | |
| 81 | +- **Parution** : 44/44 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 44, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 86 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
added
docs/connecteurs/coledesentrepreneursduqubec.md
+109 −0
@@ -0,0 +1,109 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/coledesentrepreneursduqubec.md | |
| 7 | +Rôle : Fiche connecteur — École des entrepreneurs du Québec (employeur direct, ATS smartrecruiters) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# École des entrepreneurs du Québec (`coledesentrepreneursduqubec`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`smartrecruiters`](ats-smartrecruiters.md) · Statut registre : actif · Connecteur : `jobka/connectors/coledesentrepreneursduqubec.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [École des entrepreneurs du Québec]() | |
| 20 | +- **Page carrières** : https://jobs.smartrecruiters.com/company/coledesentrepreneursduqubec | |
| 21 | +- **Secteurs** : Éducation | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-smartrecruiters.md`](ats-smartrecruiters.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `COMPANY` | `coledesentrepreneursduqubec` | | |
| 33 | +| `EMPLOYER` | `École des entrepreneurs du Québec` | | |
| 34 | +- **Throttle** : 0.7 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 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) | 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 : *CONSEILLER.ÈRE AUX ENTREPRENEURS* — Montréal · ∅ · parue le 2022-02-21. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 72 | + | |
| 73 | +| Variable | Défaut | | |
| 74 | +|---|---| | |
| 75 | +| `JOBKA_SR_DETAIL_LIMIT` | `300` | | |
| 76 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 77 | + | |
| 78 | +## Volumétrie & complétude live | |
| 79 | + | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | + | |
| 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** : 1/1 actives (100 %) | |
| 86 | +- **Parution** : 1/1 actives (100 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 1, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 89 | + | |
| 90 | +## Erreurs & dépannage | |
| 91 | + | |
| 92 | +Aucune erreur dans `sync_log` pour cette source. | |
| 93 | + | |
| 94 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync coledesentrepreneursduqubec` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='coledesentrepreneursduqubec' ORDER BY ts DESC LIMIT 5;"` | |
| 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`. | |
| 96 | + | |
| 97 | +## Licence / conformité | |
| 98 | + | |
| 99 | +**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 École des entrepreneurs du Québec » 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. | |
| 100 | + | |
| 101 | +## Historique | |
| 102 | + | |
| 103 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 104 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 105 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 106 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 107 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 108 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 109 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/cologix.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/cologix.md | |
| 7 | +Rôle : Fiche connecteur — Cologix (employeur direct, ATS lever) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Cologix (`cologix`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`lever`](ats-lever.md) · Statut registre : actif · Connecteur : `jobka/connectors/cologix.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Cologix]() | |
| 20 | +- **Page carrières** : https://jobs.lever.co/cologix | |
| 21 | +- **Secteurs** : TI | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-lever.md`](ats-lever.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Cologix` | | |
| 33 | +| `ORG` | `cologix` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-22 22:14 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 | 33 % | | |
| 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 : *Généraliste RH* — Montréal · ∅ · parue le 2026-08-13. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 1/3 actives (33 %) | |
| 79 | +- **GPS** : 3/3 actives (100 %) | |
| 80 | +- **Mode** : 3/3 actives (100 %) | |
| 81 | +- **Parution** : 3/3 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 3, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync cologix` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cologix' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Cologix » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/consignaction.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/consignaction.md | |
| 7 | +Rôle : Fiche connecteur — Consignaction (AQRCB) (employeur direct, ATS workday) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Consignaction (AQRCB) (`consignaction`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workday`](ats-workday.md) · Statut registre : actif · Connecteur : `jobka/connectors/consignaction.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Consignaction (AQRCB)]() | |
| 20 | +- **Page carrières** : https://consignaction.wd10.myworkdayjobs.com/Consignaction_carrieres | |
| 21 | +- **Secteurs** : Environnement | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workday.md`](ats-workday.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Consignaction (AQRCB)` | | |
| 33 | +| `HOST` | `wd10` | | |
| 34 | +| `SITE` | `Consignaction_carrieres` | | |
| 35 | +| `TENANT` | `consignaction` | | |
| 36 | +- **Throttle** : 0.7 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **134 offres actives** de la source (base live, 2026-08-22 22:14 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 | 90 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 90 % | | |
| 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é, …) | 23 % | | |
| 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) | 100 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Conseiller(ère) aux retours* — Trois-Rivières · Salaire : 20$/heure · parue le 2026-08-21. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_WORKDAY_DETAIL_LIMIT` | `300` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | + | |
| 84 | +- **Offres en base** : 134 (dont **134 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 120/134 actives (90 %) | |
| 86 | +- **GPS** : 134/134 actives (100 %) | |
| 87 | +- **Mode** : 0/134 actives (0 %) | |
| 88 | +- **Parution** : 134/134 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 134, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync consignaction` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='consignaction' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Consignaction (AQRCB) » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/cordonbleu.md
+12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/cordonbleu.md |
| 7 | 7 | Rôle : Fiche connecteur — Aliments Ouimet-Cordon Bleu inc. (employeur direct, ATS bamboohr) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **1 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -50,8 +50,8 @@ 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 | 100 % | |
| 52 | 52 | | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | |
| 53 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 50 % | | |
| 54 | −| `salary_label` — Libellé salaire | texte salarial original | 50 % | | |
| 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 % | |
@@ -77,15 +77,15 @@ Exemple réel : *Électromécanicien Licence C - Jusqu'à 45$/hr* — Montréal | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | −- **Offres en base** : 2 (dont **2 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | −- **Salaire** : 1/2 actives (50 %) | |
| 84 | −- **GPS** : 2/2 actives (100 %) | |
| 85 | −- **Mode** : 2/2 actives (100 %) | |
| 86 | −- **Parution** : 2/2 actives (100 %) | |
| 87 | −- **Dernier sync** : 2026-08-19 03:52 — trouvées 2, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 82 | +- **Offres en base** : 2 (dont **1 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | +- **Salaire** : 1/1 actives (100 %) | |
| 84 | +- **GPS** : 1/1 actives (100 %) | |
| 85 | +- **Mode** : 1/1 actives (100 %) | |
| 86 | +- **Parution** : 1/1 actives (100 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 1, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
added
docs/connecteurs/coveofr.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/coveofr.md | |
| 7 | +Rôle : Fiche connecteur — Coveo (employeur direct, ATS greenhouse) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Coveo (`coveofr`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`greenhouse`](ats-greenhouse.md) · Statut registre : actif · Connecteur : `jobka/connectors/coveofr.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Coveo]() | |
| 20 | +- **Page carrières** : https://job-boards.greenhouse.io/coveofr | |
| 21 | +- **Secteurs** : TI | |
| 22 | +- **Région** : Québec | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-greenhouse.md`](ats-greenhouse.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `coveofr` | | |
| 33 | +| `EMPLOYER` | `Coveo` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **29 offres actives** de la source (base live, 2026-08-22 22:14 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 / … | 10 % | | |
| 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é, …) | 86 % | | |
| 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 : *Développeur.euse logiciel - Fondations* — Montréal · ∅ · parue le 2026-08-21. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 29 (dont **29 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 0/29 actives (0 %) | |
| 79 | +- **GPS** : 29/29 actives (100 %) | |
| 80 | +- **Mode** : 0/29 actives (0 %) | |
| 81 | +- **Parution** : 29/29 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 29, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync coveofr` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='coveofr' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Coveo » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/csncollision.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/csncollision.md | |
| 7 | +Rôle : Fiche connecteur — CSN Collision (employeur direct, ATS workable) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# CSN Collision (`csncollision`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workable`](ats-workable.md) · Statut registre : actif · Connecteur : `jobka/connectors/csncollision.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [CSN Collision]() | |
| 20 | +- **Page carrières** : https://apply.workable.com/csncollision | |
| 21 | +- **Secteurs** : Automobile | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workable.md`](ats-workable.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `CSN Collision` | | |
| 33 | +| `ORG` | `csncollision` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-22 22:14 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) | 33 % | | |
| 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 : *Technicien en carrosserie automobile - Carrossier Débosseleur* — Québec · ∅ · parue le 2025-12-01. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 3 (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-08-22 21:08 — trouvées 3, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync csncollision` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='csncollision' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 CSN Collision » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/cssdd.md
+11 −11
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/cssdd.md |
| 7 | 7 | Rôle : Fiche connecteur — CSS des Découvreurs (employeur direct, ATS digitalrecruiters) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **27 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 40 | +Complétude mesurée sur les **27 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 41 | 41 | |
| 42 | 42 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 43 | 43 | |---|---|---| |
@@ -50,8 +50,8 @@ Complétude mesurée sur les **27 offres actives** de la source (base live, 2026 | ||
| 50 | 50 | | `address` — Adresse | adresse du lieu de travail | 100 % | |
| 51 | 51 | | `postal_code` — Code postal | code postal si publié | 100 % | |
| 52 | 52 | | `work_mode` — Mode | presentiel / hybride / teletravail | 0 % | |
| 53 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 78 % | | |
| 54 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 78 % | | |
| 53 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 74 % | | |
| 54 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 81 % | | |
| 55 | 55 | | `salary_label` — Libellé salaire | texte salarial original | 7 % | |
| 56 | 56 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 15 % | |
| 57 | 57 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
@@ -61,7 +61,7 @@ Complétude mesurée sur les **27 offres actives** de la source (base live, 2026 | ||
| 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 | 100 % | |
| 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 | 66 | Exemple réel : *Technicien(ne) en bâtiment - Mécanique du bâtiment spécialisé en contrôles* — Québec · Salaire de 27,91 $ à 38,91 $ de l’heure · parue le 2026-06-11. |
| 67 | 67 | |
@@ -78,15 +78,15 @@ Exemple réel : *Technicien(ne) en bâtiment - Mécanique du bâtiment spéciali | ||
| 78 | 78 | |
| 79 | 79 | ## Volumétrie & complétude live |
| 80 | 80 | |
| 81 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 81 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 82 | 82 | |
| 83 | −- **Offres en base** : 27 (dont **27 actives**, 0 masquées comme doublons `dup_of`) | |
| 84 | −- **Salaire** : 21/27 actives (78 %) | |
| 85 | −- **GPS** : 0/27 actives (0 %) | |
| 83 | +- **Offres en base** : 29 (dont **27 actives**, 0 masquées comme doublons `dup_of`) | |
| 84 | +- **Salaire** : 22/27 actives (81 %) | |
| 85 | +- **GPS** : 27/27 actives (100 %) | |
| 86 | 86 | - **Mode** : 0/27 actives (0 %) |
| 87 | 87 | - **Parution** : 27/27 actives (100 %) |
| 88 | −- **Dernier sync** : 2026-08-19 05:09 — trouvées 27, +27, ~0, -0 | |
| 89 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 88 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 27, +0, ~0, -0 | |
| 89 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 90 | 90 | |
| 91 | 91 | ## Erreurs & dépannage |
| 92 | 92 | |
added
docs/connecteurs/cts_foods_brokers_inc.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/cts_foods_brokers_inc.md | |
| 7 | +Rôle : Fiche connecteur — CTS Foods Brokers (employeur direct, ATS workable) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# CTS Foods Brokers (`cts_foods_brokers_inc`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workable`](ats-workable.md) · Statut registre : actif · Connecteur : `jobka/connectors/cts_foods_brokers_inc.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [CTS Foods Brokers]() | |
| 20 | +- **Page carrières** : https://apply.workable.com/cts-foods-brokers-inc | |
| 21 | +- **Secteurs** : Agroalimentaire | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workable.md`](ats-workable.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `CTS Foods Brokers` | | |
| 33 | +| `ORG` | `cts-foods-brokers-inc` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-22 22:14 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 | 33 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 33 % | | |
| 55 | +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 17 % | | |
| 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 : *Travailleur d'entrepôt - Jour / Warehouse Worker - Day* — Québec · · 17 $ · parue le 2026-08-12. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 2/6 actives (33 %) | |
| 79 | +- **GPS** : 6/6 actives (100 %) | |
| 80 | +- **Mode** : 0/6 actives (0 %) | |
| 81 | +- **Parution** : 6/6 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 6, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync cts_foods_brokers_inc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cts_foods_brokers_inc' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 CTS Foods Brokers » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/cultures_genv.md
+12 −8
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/cultures_genv.md |
| 7 | 7 | Rôle : Fiche connecteur — Cultures Gen V (employeur direct, ATS adp) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -62,7 +62,7 @@ Complétude mesurée sur les **6 offres actives** de la source (base live, 2026- | ||
| 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 | 67 | Exemple réel : *Acheteur* — Mirabel · ∅ · parue le 2026-08-18. |
| 68 | 68 | |
@@ -79,19 +79,23 @@ Exemple réel : *Acheteur* — Mirabel · ∅ · parue le 2026-08-18. | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | 84 | - **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`) |
| 85 | 85 | - **Salaire** : 2/6 actives (33 %) |
| 86 | −- **GPS** : 0/6 actives (0 %) | |
| 86 | +- **GPS** : 6/6 actives (100 %) | |
| 87 | 87 | - **Mode** : 0/6 actives (0 %) |
| 88 | 88 | - **Parution** : 6/6 actives (100 %) |
| 89 | −- **Dernier sync** : 2026-08-19 04:49 — trouvées 6, +6, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 89 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 6, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 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 | +| 500 Server Error: for url: https://workforcenow.adp.com/mascsr/default/careercenter/publi… | 1 | 2026-08-22 00:35 | | |
| 95 | 99 | |
| 96 | 100 | - Rejouer un sync isolé : `.venv/bin/python run.py sync cultures_genv` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='cultures_genv' 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`. |
added
docs/connecteurs/damotech.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/damotech.md | |
| 7 | +Rôle : Fiche connecteur — Damotech (employeur direct, ATS workable) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Damotech (`damotech`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workable`](ats-workable.md) · Statut registre : actif · Connecteur : `jobka/connectors/damotech.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Damotech]() | |
| 20 | +- **Page carrières** : https://apply.workable.com/damotech | |
| 21 | +- **Secteurs** : Fabrication | |
| 22 | +- **Région** : Boucherville | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workable.md`](ats-workable.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Damotech` | | |
| 33 | +| `ORG` | `damotech` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-22 22:14 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 | 33 % | | |
| 52 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | | |
| 53 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 33 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 33 % | | |
| 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 : *Technicien installation* — Québec · Le salaire pour ce poste se situe entre 25$/h et 30$/h · parue le 2026-05-05. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 1/3 actives (33 %) | |
| 79 | +- **GPS** : 3/3 actives (100 %) | |
| 80 | +- **Mode** : 1/3 actives (33 %) | |
| 81 | +- **Parution** : 3/3 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 3, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync damotech` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='damotech' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Damotech » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/daniels_sharpsmart.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/daniels_sharpsmart.md | |
| 7 | +Rôle : Fiche connecteur — Daniels Health Canada (employeur direct, ATS lever) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Daniels Health Canada (`daniels_sharpsmart`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`lever`](ats-lever.md) · Statut registre : actif · Connecteur : `jobka/connectors/daniels_sharpsmart.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Daniels Health Canada]() | |
| 20 | +- **Page carrières** : https://jobs.lever.co/daniels-sharpsmart | |
| 21 | +- **Secteurs** : Santé | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-lever.md`](ats-lever.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Daniels Health Canada` | | |
| 33 | +| `ORG` | `daniels-sharpsmart` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-22 22:14 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 | 33 % | | |
| 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 | 17 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 0 % | | |
| 55 | +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 67 % | | |
| 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) | 33 % | | |
| 64 | + | |
| 65 | +Exemple réel : *Préposé(e) au service – Déchets biomédicaux* — Rivière-Rouge · ∅ · parue le 2026-08-22. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 1/6 actives (17 %) | |
| 79 | +- **GPS** : 2/6 actives (33 %) | |
| 80 | +- **Mode** : 6/6 actives (100 %) | |
| 81 | +- **Parution** : 6/6 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 6, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync daniels_sharpsmart` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='daniels_sharpsmart' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Daniels Health Canada » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/darefoods.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/darefoods.md | |
| 7 | +Rôle : Fiche connecteur — Dare Foods (employeur direct, ATS dayforce) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Dare Foods (`darefoods`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`dayforce`](ats-dayforce.md) · Statut registre : actif · Connecteur : `jobka/connectors/darefoods.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Dare Foods]() | |
| 20 | +- **Page carrières** : https://jobs.dayforcehcm.com/fr-CA/darefoods/CANDIDATEPORTAL | |
| 21 | +- **Secteurs** : Agroalimentaire | |
| 22 | +- **Région** : Sainte-Marthe-sur-le-Lac | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-dayforce.md`](ats-dayforce.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `CANDIDATEPORTAL` | | |
| 33 | +| `CULTURE` | `fr-CA` | | |
| 34 | +| `EMPLOYER` | `Dare Foods` | | |
| 35 | +| `NS` | `darefoods` | | |
| 36 | +- **Throttle** : 0.8 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 52 | +| `postal_code` — Code postal | code postal si publié | 100 % | | |
| 53 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % | | |
| 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 % | | |
| 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é, …) | 100 % | | |
| 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 | 0 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Journalier de production* — Sainte-Martine · 26.81$ de l’heure* · parue le 2026-06-14. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.8 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_DAYFORCE_DETAIL_LIMIT` | `80` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:08 — trouvées 4, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync darefoods` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='darefoods' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Dare Foods » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/dcbel.md
+12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/dcbel.md |
| 7 | 7 | Rôle : Fiche connecteur — dcbel (employeur direct, ATS bamboohr) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **21 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -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) | 90 % | |
| 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é, …) | 60 % | | |
| 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 | 63 | | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | |
| 64 | 64 | |
| 65 | −Exemple réel : *Production supervisor* — Montréal · ∅ · parue le 2026-08-05. | |
| 65 | +Exemple réel : *Product Knowledge Specialist* — Montréal · ∅ · parue le 2026-08-21. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -77,15 +77,15 @@ Exemple réel : *Production supervisor* — Montréal · ∅ · parue le 2026-08 | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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** : 20/20 actives (100 %) | |
| 86 | −- **Parution** : 20/20 actives (100 %) | |
| 87 | −- **Dernier sync** : 2026-08-19 03:52 — trouvées 20, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 82 | +- **Offres en base** : 21 (dont **21 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | +- **Salaire** : 0/21 actives (0 %) | |
| 84 | +- **GPS** : 21/21 actives (100 %) | |
| 85 | +- **Mode** : 21/21 actives (100 %) | |
| 86 | +- **Parution** : 21/21 actives (100 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 21, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
added
docs/connecteurs/delmar_international_inc.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/delmar_international_inc.md | |
| 7 | +Rôle : Fiche connecteur — Delmar International (employeur direct, ATS workable) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Delmar International (`delmar_international_inc`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workable`](ats-workable.md) · Statut registre : actif · Connecteur : `jobka/connectors/delmar_international_inc.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Delmar International]() | |
| 20 | +- **Page carrières** : https://apply.workable.com/delmar-international-inc | |
| 21 | +- **Secteurs** : Logistique | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workable.md`](ats-workable.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Delmar International` | | |
| 33 | +| `ORG` | `delmar-international-inc` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-22 22:14 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 : *D365 Business Analyst* — Montréal · ∅ · parue le 2026-08-17. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:08 — trouvées 4, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync delmar_international_inc` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='delmar_international_inc' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Delmar International » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/deloitte.md
+9 −9
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/deloitte.md |
| 7 | 7 | Rôle : Fiche connecteur — Deloitte Canada (employeur direct, ATS successfactors) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **105 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **105 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -56,11 +56,11 @@ Complétude mesurée sur les **105 offres actives** de la source (base live, 202 | ||
| 56 | 56 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 93 % | | |
| 59 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 94 % | | |
| 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 | 65 | Exemple réel : *Consultant(e) sénior, Gestion de contenu OpenText* — Montréal · L’échelle salariale pour ce poste est de 80,000 $ à 138,000 $ · parue le ∅. |
| 66 | 66 | |
@@ -77,15 +77,15 @@ Exemple réel : *Consultant(e) sénior, Gestion de contenu OpenText* — Montré | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | −- **Offres en base** : 105 (dont **105 actives**, 0 masquées comme doublons `dup_of`) | |
| 82 | +- **Offres en base** : 107 (dont **105 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | 83 | - **Salaire** : 101/105 actives (96 %) |
| 84 | −- **GPS** : 0/105 actives (0 %) | |
| 84 | +- **GPS** : 105/105 actives (100 %) | |
| 85 | 85 | - **Mode** : 103/105 actives (98 %) |
| 86 | 86 | - **Parution** : 0/105 actives (0 %) |
| 87 | −- **Dernier sync** : 2026-08-19 04:48 — trouvées 105, +105, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 105, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
added
docs/connecteurs/dentalcorp.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/dentalcorp.md | |
| 7 | +Rôle : Fiche connecteur — Dentalcorp (employeur direct, ATS workday) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Dentalcorp (`dentalcorp`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workday`](ats-workday.md) · Statut registre : actif · Connecteur : `jobka/connectors/dentalcorp.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Dentalcorp]() | |
| 20 | +- **Page carrières** : https://dentalcorp.wd3.myworkdayjobs.com/dentalcorp | |
| 21 | +- **Secteurs** : Santé | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workday.md`](ats-workday.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Dentalcorp` | | |
| 33 | +| `HOST` | `wd3` | | |
| 34 | +| `SITE` | `dentalcorp` | | |
| 35 | +| `TENANT` | `dentalcorp` | | |
| 36 | +- **Throttle** : 0.7 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **97 offres actives** de la source (base live, 2026-08-22 22:14 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 | 99 % | | |
| 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 | 1 % | | |
| 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 % | | |
| 57 | +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 2 % | | |
| 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é, …) | 99 % | | |
| 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) | 99 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Bilingual Talent Engagement & Events Coordinator* — Montréal · The salary range for this position is $60,000 to $65,000 annually + 10% bonus · parue le 2026-08-07. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_WORKDAY_DETAIL_LIMIT` | `300` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | + | |
| 84 | +- **Offres en base** : 97 (dont **97 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 13/97 actives (13 %) | |
| 86 | +- **GPS** : 96/97 actives (99 %) | |
| 87 | +- **Mode** : 1/97 actives (1 %) | |
| 88 | +- **Parution** : 97/97 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:08 — trouvées 97, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync dentalcorp` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='dentalcorp' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Dentalcorp » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/depot-direct.md
+2 −2
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/depot-direct.md |
| 7 | 7 | Rôle : Fiche du canal de dépôt direct employeurs |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Volumétrie & complétude live |
| 38 | 38 | |
| 39 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 39 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 40 | 40 | |
| 41 | 41 | - **Offres en base** : 0 (dont **0 actives**, 0 masquées comme doublons `dup_of`) |
| 42 | 42 | - **Salaire** : 0/0 actives (—) |
modified
docs/connecteurs/desjardins.md
+14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/desjardins.md |
| 7 | 7 | Rôle : Fiche connecteur — Mouvement Desjardins (employeur direct, ATS workday) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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 **241 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **255 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -46,11 +46,11 @@ Complétude mesurée sur les **241 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 | 94 % | | |
| 49 | +| `city` — Ville | municipalité normalisée | 93 % | | |
| 50 | 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 | −| `work_mode` — Mode | presentiel / hybride / teletravail | 21 % | | |
| 53 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 22 % | | |
| 54 | 54 | | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | |
| 55 | 55 | | `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 2 % | |
| 56 | 56 | | `salary_label` — Libellé salaire | texte salarial original | 2 % | |
@@ -58,11 +58,11 @@ Complétude mesurée sur les **241 offres actives** de la source (base live, 202 | ||
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 61 % | | |
| 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) | 94 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 93 % | | |
| 66 | 66 | |
| 67 | 67 | Exemple réel : *Advisor, Banking and Credit Services, Customer Relations Center* — Montréal · A competitive wage starting at $26,41/hour, adjusted based on relevant experience · parue le 2026-08-04. |
| 68 | 68 | |
@@ -79,15 +79,15 @@ Exemple réel : *Advisor, Banking and Credit Services, Customer Relations Center | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 260 (dont **241 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 4/241 actives (2 %) | |
| 86 | −- **GPS** : 226/241 actives (94 %) | |
| 87 | −- **Mode** : 50/241 actives (21 %) | |
| 88 | −- **Parution** : 241/241 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:55 — trouvées 241, +0, ~172, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 30 | |
| 84 | +- **Offres en base** : 309 (dont **255 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 4/255 actives (2 %) | |
| 86 | +- **GPS** : 236/255 actives (93 %) | |
| 87 | +- **Mode** : 55/255 actives (22 %) | |
| 88 | +- **Parution** : 255/255 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:09 — trouvées 255, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 89 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/devimco.md
+5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/devimco.md |
| 7 | 7 | Rôle : Fiche connecteur — Devimco Appartements (employeur direct, ATS bamboohr) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -77,15 +77,15 @@ Exemple réel : *Superviseur(e) à la maintenance* — Québec · Salaire: 75 00 | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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** : 1/8 actives (12 %) |
| 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-19 03:55 — trouvées 8, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:09 — trouvées 8, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/dilitrust.md
+5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/dilitrust.md |
| 7 | 7 | Rôle : Fiche connecteur — DiliTrust (employeur direct, ATS lever) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ Exemple réel : *Account Manager* — Montréal · ∅ · parue le 2026-06-04. | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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-19 03:55 — trouvées 3, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 82 | +- **Dernier sync** : 2026-08-22 21:09 — trouvées 3, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/distro.md
+12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/distro.md |
| 7 | 7 | Rôle : Fiche connecteur — Distro (employeur direct, ATS lever) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **7 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -56,13 +56,13 @@ Complétude mesurée sur les **5 offres actives** de la source (base live, 2026- | ||
| 56 | 56 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 86 % | | |
| 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 : *Conversion Consultant* — Québec · ∅ · parue le 2026-06-08. | |
| 65 | +Exemple réel : *16487.1 - System Expert - Canada - On Site* — Québec · ∅ · parue le 2026-08-20. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Conversion Consultant* — Québec · ∅ · parue le 2026-06-0 | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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** : 5/5 actives (100 %) | |
| 81 | −- **Parution** : 5/5 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:55 — trouvées 5, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 77 | +- **Offres en base** : 7 (dont **7 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 7/7 actives (100 %) | |
| 79 | +- **GPS** : 7/7 actives (100 %) | |
| 80 | +- **Mode** : 7/7 actives (100 %) | |
| 81 | +- **Parution** : 7/7 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:09 — trouvées 7, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/domtar.md
+13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/domtar.md |
| 7 | 7 | Rôle : Fiche connecteur — Domtar (employeur direct, ATS successfactors) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,14 +36,14 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **106 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **102 offres actives** de la source (base live, 2026-08-22 22:14 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é) | 93 % | | |
| 46 | +| `description` — Description | texte complet (HTML nettoyé) | 94 % | | |
| 47 | 47 | | `city` — Ville | municipalité normalisée | 100 % | |
| 48 | 48 | | `region` — Région | région administrative | 92 % | |
| 49 | 49 | | `address` — Adresse | adresse du lieu de travail | 0 % | |
@@ -56,8 +56,8 @@ Complétude mesurée sur les **106 offres actives** de la source (base live, 202 | ||
| 56 | 56 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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é, …) | 92 % | | |
| 60 | −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 92 % | | |
| 59 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 91 % | | |
| 60 | +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 93 % | | |
| 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) | 99 % | |
@@ -77,15 +77,15 @@ Exemple réel : *Sales Manager, Quebec Region* — Lachine · ∅ · parue le | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | −- **Offres en base** : 107 (dont **106 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | −- **Salaire** : 0/106 actives (0 %) | |
| 84 | −- **GPS** : 105/106 actives (99 %) | |
| 85 | −- **Mode** : 0/106 actives (0 %) | |
| 86 | −- **Parution** : 0/106 actives (0 %) | |
| 87 | −- **Dernier sync** : 2026-08-19 03:55 — trouvées 106, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 82 | +- **Offres en base** : 107 (dont **102 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | +- **Salaire** : 0/102 actives (0 %) | |
| 84 | +- **GPS** : 101/102 actives (99 %) | |
| 85 | +- **Mode** : 0/102 actives (0 %) | |
| 86 | +- **Parution** : 0/102 actives (0 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 21:10 — trouvées 102, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/dulcedo.md
+5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/dulcedo.md |
| 7 | 7 | Rôle : Fiche connecteur — Dulcedo Management (employeur direct, ATS lever) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ Exemple réel : *Senior Manager, Strategic Partnerships & New Business* — Mont | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | 77 | - **Offres en base** : 4 (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-19 03:55 — trouvées 3, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 82 | +- **Dernier sync** : 2026-08-22 21:10 — trouvées 3, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
added
docs/connecteurs/eastpenn.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/eastpenn.md | |
| 7 | +Rôle : Fiche connecteur — East Penn Canada (employeur direct, ATS dayforce) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# East Penn Canada (`eastpenn`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`dayforce`](ats-dayforce.md) · Statut registre : actif · Connecteur : `jobka/connectors/eastpenn.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [East Penn Canada]() | |
| 20 | +- **Page carrières** : https://jobs.dayforcehcm.com/fr-CA/eastpenn/CANDIDATEPORTAL | |
| 21 | +- **Secteurs** : Distribution | |
| 22 | +- **Région** : Laval | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-dayforce.md`](ats-dayforce.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `CANDIDATEPORTAL` | | |
| 33 | +| `CULTURE` | `fr-CA` | | |
| 34 | +| `EMPLOYER` | `East Penn Canada` | | |
| 35 | +| `NS` | `eastpenn` | | |
| 36 | +- **Throttle** : 0.8 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 52 | +| `postal_code` — Code postal | code postal si publié | 33 % | | |
| 53 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 0 % | | |
| 54 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 33 % | | |
| 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 % | | |
| 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é, …) | 67 % | | |
| 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 | 0 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Technicien de service - Laval* — Laval · ∅ · parue le 2026-07-27. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.8 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_DAYFORCE_DETAIL_LIMIT` | `80` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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** : 0/3 actives (0 %) | |
| 88 | +- **Parution** : 3/3 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 3, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync eastpenn` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='eastpenn' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 East Penn Canada » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/ecosystem.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/ecosystem.md | |
| 7 | +Rôle : Fiche connecteur — Ecosystem Énergie (employeur direct, ATS lever) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Ecosystem Énergie (`ecosystem`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`lever`](ats-lever.md) · Statut registre : actif · Connecteur : `jobka/connectors/ecosystem.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Ecosystem Énergie]() | |
| 20 | +- **Page carrières** : https://jobs.lever.co/ecosystem | |
| 21 | +- **Secteurs** : Énergie | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-lever.md`](ats-lever.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Ecosystem Énergie` | | |
| 33 | +| `ORG` | `ecosystem` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-22 22:14 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 : *Surveillant de chantier (Mécanique du bâtiment)* — Montréal · ∅ · parue le 2026-06-19. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:11 — trouvées 4, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync ecosystem` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='ecosystem' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Ecosystem Énergie » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/edf_renouvelables.md
+5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/edf_renouvelables.md |
| 7 | 7 | Rôle : Fiche connecteur — EDF Renouvelables Canada (employeur direct, ATS icims) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **9 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -77,15 +77,15 @@ Exemple réel : *Ingénieur.e électrique sénior [Hybride]* — Montréal · É | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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** : 7/9 actives (78 %) |
| 84 | 84 | - **GPS** : 6/9 actives (67 %) |
| 85 | 85 | - **Mode** : 6/9 actives (67 %) |
| 86 | 86 | - **Parution** : 9/9 actives (100 %) |
| 87 | −- **Dernier sync** : 2026-08-19 03:55 — trouvées 9, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 9, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
added
docs/connecteurs/eidosmontreal.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/eidosmontreal.md | |
| 7 | +Rôle : Fiche connecteur — Eidos-Montréal (employeur direct, ATS dayforce) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Eidos-Montréal (`eidosmontreal`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`dayforce`](ats-dayforce.md) · Statut registre : actif · Connecteur : `jobka/connectors/eidosmontreal.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Eidos-Montréal]() | |
| 20 | +- **Page carrières** : https://jobs.dayforcehcm.com/fr-CA/eic/CANDIDATEPORTAL | |
| 21 | +- **Secteurs** : Jeu vidéo | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-dayforce.md`](ats-dayforce.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `CANDIDATEPORTAL` | | |
| 33 | +| `CULTURE` | `fr-CA` | | |
| 34 | +| `EMPLOYER` | `Eidos-Montréal` | | |
| 35 | +| `NS` | `eic` | | |
| 36 | +- **Throttle** : 0.8 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 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 | 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 % | | |
| 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é, …) | 100 % | | |
| 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 | 0 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Responsable senior, marketing et marque* — Montréal · ∅ · parue le 2026-07-07. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.8 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_DAYFORCE_DETAIL_LIMIT` | `80` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:11 — trouvées 2, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync eidosmontreal` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='eidosmontreal' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Eidos-Montréal » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/emcocorporation.md
+14 −14
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/emcocorporation.md |
| 7 | 7 | Rôle : Fiche connecteur — EMCO (employeur direct, ATS smartrecruiters) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **67 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **64 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -48,15 +48,15 @@ Complétude mesurée sur les **67 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 | 22 % | | |
| 51 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 20 % | | |
| 52 | 52 | | `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | |
| 53 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 48 % | | |
| 54 | −| `salary_label` — Libellé salaire | texte salarial original | 48 % | | |
| 53 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 45 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 45 % | | |
| 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é, …) | 93 % | | |
| 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 % | |
@@ -77,15 +77,15 @@ Exemple réel : *Gestionnaire Junior en Distribution / Strategic Development Tra | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | −- **Offres en base** : 67 (dont **67 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | −- **Salaire** : 32/67 actives (48 %) | |
| 84 | −- **GPS** : 67/67 actives (100 %) | |
| 85 | −- **Mode** : 15/67 actives (22 %) | |
| 86 | −- **Parution** : 67/67 actives (100 %) | |
| 87 | −- **Dernier sync** : 2026-08-19 03:55 — trouvées 67, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 82 | +- **Offres en base** : 67 (dont **64 actives**, 0 masquées comme doublons `dup_of`) | |
| 83 | +- **Salaire** : 29/64 actives (45 %) | |
| 84 | +- **GPS** : 64/64 actives (100 %) | |
| 85 | +- **Mode** : 13/64 actives (20 %) | |
| 86 | +- **Parution** : 64/64 actives (100 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 64, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/eminent_valet.md
+12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/eminent_valet.md |
| 7 | 7 | Rôle : Fiche connecteur — Eminent Valet (employeur direct, ATS workable) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -49,7 +49,7 @@ 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 / … | 89 % | | |
| 52 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 80 % | | |
| 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 % | |
@@ -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 : *Valet & Butler \| Voiturier et Majordome (On-call, Sur appel)* — Montréal · Rémunération compétitive : 18 $ de l’heure+ pourboires selon la performance (non plafonnés… · parue le 2026-08-17. | |
| 65 | +Exemple réel : *Valet Voiturier \| Valet driver (Sur appel/On-call)* — Montréal · Rémunération compétitive : 18 $ de l’heure + pourboires selon la performance (non plafonné… · parue le 2026-08-20. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Valet & Butler \| Voiturier et Majordome (On-call, Sur appel)* | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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** : 0/9 actives (0 %) | |
| 81 | −- **Parution** : 9/9 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:55 — trouvées 9, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 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** : 0/10 actives (0 %) | |
| 81 | +- **Parution** : 10/10 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 10, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/eosaircraftinc.md
+5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/eosaircraftinc.md |
| 7 | 7 | Rôle : Fiche connecteur — EOS Aircraft (employeur direct, ATS bamboohr) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **4 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -77,15 +77,15 @@ Exemple réel : *Ingénieur principal – Systèmes de gestion de batterie (BMS) | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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-19 03:55 — trouvées 4, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 4, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/eq3_ltd.md
+5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/eq3_ltd.md |
| 7 | 7 | Rôle : Fiche connecteur — EQ3 (employeur direct, ATS breezy) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ Exemple réel : *Consultant(e) en design - À temps plein* — Brossard · Nos c | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | 77 | - **Offres en base** : 10 (dont **10 actives**, 0 masquées comme doublons `dup_of`) |
| 78 | 78 | - **Salaire** : 6/10 actives (60 %) |
| 79 | 79 | - **GPS** : 10/10 actives (100 %) |
| 80 | 80 | - **Mode** : 0/10 actives (0 %) |
| 81 | 81 | - **Parution** : 10/10 actives (100 %) |
| 82 | −- **Dernier sync** : 2026-08-19 03:55 — trouvées 10, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 82 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 10, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/eqbank.md
+5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/eqbank.md |
| 7 | 7 | Rôle : Fiche connecteur — EQ Bank (employeur direct, ATS lever) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -72,15 +72,15 @@ Exemple réel : *Directeur régional adjoint, Origination commerciale (CFG)/Asso | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | 77 | - **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`) |
| 78 | 78 | - **Salaire** : 3/6 actives (50 %) |
| 79 | 79 | - **GPS** : 3/6 actives (50 %) |
| 80 | 80 | - **Mode** : 6/6 actives (100 %) |
| 81 | 81 | - **Parution** : 6/6 actives (100 %) |
| 82 | −- **Dernier sync** : 2026-08-19 03:55 — trouvées 6, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 82 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 6, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/espresso_jobs.md
+23 −23
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/espresso_jobs.md |
| 7 | 7 | Rôle : Fiche connecteur — portail agrégateur Espresso-Jobs |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -35,7 +35,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 35 | 35 | |
| 36 | 36 | ## Champs → schéma |
| 37 | 37 | |
| 38 | −Complétude mesurée sur les **309 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 38 | +Complétude mesurée sur les **305 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 39 | 39 | |
| 40 | 40 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 41 | 41 | |---|---|---| |
@@ -43,25 +43,25 @@ Complétude mesurée sur les **309 offres actives** de la source (base live, 202 | ||
| 43 | 43 | | `employer` — Employeur | nom de l'entreprise | 100 % | |
| 44 | 44 | | `url` — URL | lien direct vers l'offre originale | 100 % | |
| 45 | 45 | | `description` — Description | texte complet (HTML nettoyé) | 100 % | |
| 46 | −| `city` — Ville | municipalité normalisée | 99 % | | |
| 47 | −| `region` — Région | région administrative | 99 % | | |
| 46 | +| `city` — Ville | municipalité normalisée | 100 % | | |
| 47 | +| `region` — Région | région administrative | 100 % | | |
| 48 | 48 | | `address` — Adresse | adresse du lieu de travail | 100 % | |
| 49 | −| `postal_code` — Code postal | code postal si publié | 1 % | | |
| 50 | −| `work_mode` — Mode | presentiel / hybride / teletravail | 13 % | | |
| 51 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 34 % | | |
| 52 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 23 % | | |
| 53 | −| `salary_label` — Libellé salaire | texte salarial original | 3 % | | |
| 49 | +| `postal_code` — Code postal | code postal si publié | 2 % | | |
| 50 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 19 % | | |
| 51 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 32 % | | |
| 52 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 21 % | | |
| 53 | +| `salary_label` — Libellé salaire | texte salarial original | 6 % | | |
| 54 | 54 | | `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | |
| 55 | −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | | |
| 55 | +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 88 % | | |
| 56 | 56 | | `date_posted` — Date de parution | ISO 8601 | 100 % | |
| 57 | 57 | | `date_deadline` — Date limite | date limite pour postuler | 100 % | |
| 58 | −| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 77 % | | |
| 59 | −| `language` — Langue | fr / en / bilingue (source ou heuristique) | 100 % | | |
| 60 | −| `company_logo` — Logo employeur | URL du logo si exposé par la source | 0 % | | |
| 58 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 76 % | | |
| 59 | +| `language` — Langue | fr / en / bilingue (source ou heuristique) | 99 % | | |
| 60 | +| `company_logo` — Logo employeur | URL du logo si exposé par la source | 99 % | | |
| 61 | 61 | | `apply_url` — Candidature | lien de candidature directe | 0 % | |
| 62 | −| `gps` — GPS | lat/lng (géocodage sans invention) | 94 % | | |
| 62 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 5 % | | |
| 63 | 63 | |
| 64 | −Exemple réel : *Bilingual Customer Service Representative* — Montréal · This position is hourly, and the starting pay rate is $23.50/hour with eligibility for a a… · parue le 2026-08-15. | |
| 64 | +Exemple réel : *Développeur logiciel I / Software Engineer I* — Montréal · The annualized base pay range for this role is expected to be between $67,900 - $126,100 C… · parue le 2026-08-22. | |
| 65 | 65 | |
| 66 | 66 | ## Fréquence & budgets |
| 67 | 67 | |
@@ -77,15 +77,15 @@ Exemple réel : *Bilingual Customer Service Representative* — Montréal · Thi | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | −- **Offres en base** : 309 (dont **309 actives**, 13 masquées comme doublons `dup_of`) | |
| 83 | −- **Salaire** : 70/309 actives (23 %) | |
| 84 | −- **GPS** : 292/309 actives (94 %) | |
| 85 | −- **Mode** : 39/309 actives (13 %) | |
| 86 | −- **Parution** : 309/309 actives (100 %) | |
| 87 | −- **Dernier sync** : 2026-08-19 03:55 — trouvées 309, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 82 | +- **Offres en base** : 617 (dont **305 actives**, 12 masquées comme doublons `dup_of`) | |
| 83 | +- **Salaire** : 63/305 actives (21 %) | |
| 84 | +- **GPS** : 14/305 actives (5 %) | |
| 85 | +- **Mode** : 58/305 actives (19 %) | |
| 86 | +- **Parution** : 305/305 actives (100 %) | |
| 87 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 305, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
added
docs/connecteurs/eurofinsenvironex.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/eurofinsenvironex.md | |
| 7 | +Rôle : Fiche connecteur — Eurofins EnvironeX (employeur direct, ATS recruitee) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Eurofins EnvironeX (`eurofinsenvironex`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`recruitee`](ats-recruitee.md) · Statut registre : actif · Connecteur : `jobka/connectors/eurofinsenvironex.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Eurofins EnvironeX]() | |
| 20 | +- **Page carrières** : https://eurofinsenvironex.recruitee.com | |
| 21 | +- **Secteurs** : Laboratoires | |
| 22 | +- **Région** : Longueuil | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-recruitee.md`](ats-recruitee.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Eurofins EnvironeX` | | |
| 33 | +| `ORG` | `eurofinsenvironex` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **47 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 52 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 36 % | | |
| 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é, …) | 98 % | | |
| 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 : *Technicien(ne) de laboratoire en chimie métaux - Quart de Soir* — Longueuil · ∅ · parue le 2026-08-21. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 47 (dont **47 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 0/47 actives (0 %) | |
| 79 | +- **GPS** : 47/47 actives (100 %) | |
| 80 | +- **Mode** : 47/47 actives (100 %) | |
| 81 | +- **Parution** : 47/47 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 47, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync eurofinsenvironex` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='eurofinsenvironex' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Eurofins EnvironeX » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/evlo.md
+5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/evlo.md |
| 7 | 7 | Rôle : Fiche connecteur — EVLO (Hydro-Québec) (employeur direct, ATS bamboohr) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **3 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -77,15 +77,15 @@ Exemple réel : *Ingénieur en automatisation* — Québec · ∅ · parue le 20 | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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-19 03:55 — trouvées 3, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 3, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/evolving_web.md
+13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/evolving_web.md |
| 7 | 7 | Rôle : Fiche connecteur — Evolving Web (employeur direct, ATS workable) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **12 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -48,12 +48,12 @@ Complétude mesurée sur les **14 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 % | | |
| 51 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 17 % | | |
| 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) | 93 % | | |
| 56 | +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 92 % | | |
| 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 % | |
@@ -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 : *Technical Content and Proposal Writer* — Montréal · ∅ · parue le 2026-08-12. | |
| 65 | +Exemple réel : *Chef de projets* — Montréal · ∅ · parue le 2026-08-19. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Technical Content and Proposal Writer* — Montréal · ∅ · | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 76 | |
| 77 | −- **Offres en base** : 14 (dont **14 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | −- **Salaire** : 0/14 actives (0 %) | |
| 79 | −- **GPS** : 14/14 actives (100 %) | |
| 80 | −- **Mode** : 2/14 actives (14 %) | |
| 81 | −- **Parution** : 14/14 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:55 — trouvées 14, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 77 | +- **Offres en base** : 17 (dont **12 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 0/12 actives (0 %) | |
| 79 | +- **GPS** : 12/12 actives (100 %) | |
| 80 | +- **Mode** : 2/12 actives (17 %) | |
| 81 | +- **Parution** : 12/12 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 12, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
added
docs/connecteurs/excellencepeterbilt.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/excellencepeterbilt.md | |
| 7 | +Rôle : Fiche connecteur — Camions Excellence Peterbilt (employeur direct, ATS dayforce) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Camions Excellence Peterbilt (`excellencepeterbilt`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`dayforce`](ats-dayforce.md) · Statut registre : actif · Connecteur : `jobka/connectors/excellencepeterbilt.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Camions Excellence Peterbilt]() | |
| 20 | +- **Page carrières** : https://jobs.dayforcehcm.com/fr-CA/camion/CANDIDATEPORTAL | |
| 21 | +- **Secteurs** : Automobile | |
| 22 | +- **Région** : Sainte-Julie | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-dayforce.md`](ats-dayforce.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `CANDIDATEPORTAL` | | |
| 33 | +| `CULTURE` | `fr-CA` | | |
| 34 | +| `EMPLOYER` | `Camions Excellence Peterbilt` | | |
| 35 | +| `NS` | `camion` | | |
| 36 | +- **Throttle** : 0.8 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **40 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 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 / … | 32 % | | |
| 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 % | | |
| 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é, …) | 62 % | | |
| 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 | 0 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Conseiller au service* — Sainte-Julie · ∅ · parue le 2026-08-19. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.8 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_DAYFORCE_DETAIL_LIMIT` | `80` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | + | |
| 84 | +- **Offres en base** : 40 (dont **40 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 0/40 actives (0 %) | |
| 86 | +- **GPS** : 40/40 actives (100 %) | |
| 87 | +- **Mode** : 0/40 actives (0 %) | |
| 88 | +- **Parution** : 40/40 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 40, +0, ~1, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync excellencepeterbilt` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='excellencepeterbilt' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Camions Excellence Peterbilt » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/exegy.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/exegy.md | |
| 7 | +Rôle : Fiche connecteur — Exegy (employeur direct, ATS ashby) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Exegy (`exegy`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`ashby`](ats-ashby.md) · Statut registre : actif · Connecteur : `jobka/connectors/exegy.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Exegy]() | |
| 20 | +- **Page carrières** : https://jobs.ashbyhq.com/exegy | |
| 21 | +- **Secteurs** : TI | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-ashby.md`](ats-ashby.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Exegy` | | |
| 33 | +| `ORG` | `exegy` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 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 : *Chef d'équipe développement logiciel C++ / Lead Software Developer, C++* — Montréal · ∅ · parue le 2026-08-05. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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** : 2/2 actives (100 %) | |
| 81 | +- **Parution** : 2/2 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 2, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 6 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync exegy` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='exegy' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Exegy » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/exfo.md
+11 −11
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/exfo.md |
| 7 | 7 | Rôle : Fiche connecteur — EXFO (employeur direct, ATS workday) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -50,7 +50,7 @@ Complétude mesurée sur les **27 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 | 56 % | | |
| 53 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 58 % | | |
| 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 % | |
@@ -79,15 +79,15 @@ Exemple réel : *Specialiste controle des offres* — Québec · ∅ · parue le | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 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** : 27/27 actives (100 %) | |
| 87 | −- **Mode** : 15/27 actives (56 %) | |
| 88 | −- **Parution** : 27/27 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:56 — trouvées 27, +0, ~17, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 84 | +- **Offres en base** : 27 (dont **24 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 0/24 actives (0 %) | |
| 86 | +- **GPS** : 24/24 actives (100 %) | |
| 87 | +- **Mode** : 14/24 actives (58 %) | |
| 88 | +- **Parution** : 24/24 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 24, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/exo.md
+19 −15
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/exo.md |
| 7 | 7 | Rôle : Fiche connecteur — exo (transport métropolitain) (employeur direct, ATS taleo_tbe) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 42 | +Complétude mesurée sur les **25 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 43 | 43 | |
| 44 | 44 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 45 | 45 | |---|---|---| |
@@ -49,21 +49,21 @@ Complétude mesurée sur les **25 offres actives** de la source (base live, 2026 | ||
| 49 | 49 | | `description` — Description | texte complet (HTML nettoyé) | 100 % | |
| 50 | 50 | | `city` — Ville | municipalité normalisée | 100 % | |
| 51 | 51 | | `region` — Région | région administrative | 100 % | |
| 52 | −| `address` — Adresse | adresse du lieu de travail | 96 % | | |
| 53 | −| `postal_code` — Code postal | code postal si publié | 96 % | | |
| 54 | −| `work_mode` — Mode | presentiel / hybride / teletravail | 100 % | | |
| 52 | +| `address` — Adresse | adresse du lieu de travail | 100 % | | |
| 53 | +| `postal_code` — Code postal | code postal si publié | 100 % | | |
| 54 | +| `work_mode` — Mode | presentiel / hybride / teletravail | 96 % | | |
| 55 | 55 | | `employment_type` — Type | temps_plein / temps_partiel / … | 96 % | |
| 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 | −| `date_posted` — Date de parution | ISO 8601 | 100 % | | |
| 60 | +| `date_posted` — Date de parution | ISO 8601 | 92 % | | |
| 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 | 68 | Exemple réel : *Chargé(e) de projets* — Montréal - Siège social · ∅ · parue le 2026-08-13. |
| 69 | 69 | |
@@ -80,19 +80,23 @@ Exemple réel : *Chargé(e) de projets* — Montréal - Siège social · ∅ · | ||
| 80 | 80 | |
| 81 | 81 | ## Volumétrie & complétude live |
| 82 | 82 | |
| 83 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 83 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 84 | 84 | |
| 85 | −- **Offres en base** : 25 (dont **25 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Offres en base** : 27 (dont **25 actives**, 0 masquées comme doublons `dup_of`) | |
| 86 | 86 | - **Salaire** : 0/25 actives (0 %) |
| 87 | −- **GPS** : 0/25 actives (0 %) | |
| 88 | −- **Mode** : 25/25 actives (100 %) | |
| 89 | −- **Parution** : 25/25 actives (100 %) | |
| 90 | −- **Dernier sync** : 2026-08-19 04:48 — trouvées 25, +25, ~0, -0 | |
| 91 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 87 | +- **GPS** : 25/25 actives (100 %) | |
| 88 | +- **Mode** : 24/25 actives (96 %) | |
| 89 | +- **Parution** : 23/25 actives (92 %) | |
| 90 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 25, +0, ~0, -0 | |
| 91 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 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 | +| 503 Server Error: Service Unavailable for url: https://phh.tbe.taleo.net/phh04/ats/servlet… | 1 | 2026-08-21 23:11 | | |
| 96 | 100 | |
| 97 | 101 | - Rejouer un sync isolé : `.venv/bin/python run.py sync exo` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='exo' ORDER BY ts DESC LIMIT 5;"` |
| 98 | 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/explorance.md
+12 −12
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/explorance.md |
| 7 | 7 | Rôle : Fiche connecteur — Explorance (employeur direct, ATS bamboohr) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS | ||
| 36 | 36 | |
| 37 | 37 | ## Champs → schéma |
| 38 | 38 | |
| 39 | −Complétude mesurée sur les **18 offres actives** de la source (base live, 2026-08-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **19 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -56,13 +56,13 @@ Complétude mesurée sur les **18 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é, …) | 78 % | | |
| 59 | +| `category` — Catégorie | taxonomie interne (TI, Santé, …) | 79 % | | |
| 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 : *Coordonnateur(trice) des services de bureau et de la réception / Office Services & Recepti…* — Montréal · ∅ · parue le 2026-08-07. | |
| 65 | +Exemple réel : *Administrateur(trice) de bases de données – PostgreSQL / Database Administrator – PostgreS…* — Montréal · ∅ · parue le 2026-08-21. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -77,15 +77,15 @@ Exemple réel : *Coordonnateur(trice) des services de bureau et de la réception | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 81 | 81 | |
| 82 | −- **Offres en base** : 18 (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-08-19 03:56 — trouvées 18, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 82 | +- **Offres en base** : 19 (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-08-22 21:11 — trouvées 19, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
added
docs/connecteurs/export_development_canada.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/export_development_canada.md | |
| 7 | +Rôle : Fiche connecteur — Exportation et développement Canada (EDC) (employeur direct, ATS workable) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Exportation et développement Canada (EDC) (`export_development_canada`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workable`](ats-workable.md) · Statut registre : actif · Connecteur : `jobka/connectors/export_development_canada.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Exportation et développement Canada (EDC)]() | |
| 20 | +- **Page carrières** : https://apply.workable.com/export-development-canada | |
| 21 | +- **Secteurs** : Finance | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workable.md`](ats-workable.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Exportation et développement Canada (EDC)` | | |
| 33 | +| `ORG` | `export-development-canada` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **6 offres actives** de la source (base live, 2026-08-22 22:14 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 | 17 % | | |
| 52 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 100 % | | |
| 53 | +| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 83 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 83 % | | |
| 55 | +| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | | |
| 56 | +| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 33 % | | |
| 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 : *Associate/Sr. Associate, Portfolio Management & Impact Analytics - EN-265* — Montréal · Associate Position (Performance Risk Manager 16): Salaries typically range from $74,297 to… · parue le 2026-08-21. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 6 (dont **6 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 5/6 actives (83 %) | |
| 79 | +- **GPS** : 6/6 actives (100 %) | |
| 80 | +- **Mode** : 1/6 actives (17 %) | |
| 81 | +- **Parution** : 6/6 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 6, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync export_development_canada` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='export_development_canada' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Exportation et développement Canada (EDC) » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/fastcocanada.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/fastcocanada.md | |
| 7 | +Rôle : Fiche connecteur — Fastco Canada (employeur direct, ATS dayforce) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Fastco Canada (`fastcocanada`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`dayforce`](ats-dayforce.md) · Statut registre : actif · Connecteur : `jobka/connectors/fastcocanada.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Fastco Canada]() | |
| 20 | +- **Page carrières** : https://jobs.dayforcehcm.com/fr-CA/fastco/CANDIDATEPORTAL | |
| 21 | +- **Secteurs** : Fabrication | |
| 22 | +- **Région** : Pointe-Claire | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-dayforce.md`](ats-dayforce.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `BOARD` | `CANDIDATEPORTAL` | | |
| 33 | +| `CULTURE` | `fr-CA` | | |
| 34 | +| `EMPLOYER` | `Fastco Canada` | | |
| 35 | +| `NS` | `fastco` | | |
| 36 | +- **Throttle** : 0.8 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 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 / … | 57 % | | |
| 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 % | | |
| 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é, …) | 71 % | | |
| 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 | 0 % | | |
| 65 | +| `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Production/Installation - Opérateur CNC* — Vaudreuil Dorion · ∅ · parue le 2026-08-17. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.8 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_DAYFORCE_DETAIL_LIMIT` | `80` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:11 — trouvées 14, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync fastcocanada` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='fastcocanada' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Fastco Canada » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/fedex.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/fedex.md | |
| 7 | +Rôle : Fiche connecteur — FedEx Express Canada (employeur direct, ATS workday) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# FedEx Express Canada (`fedex`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workday`](ats-workday.md) · Statut registre : actif · Connecteur : `jobka/connectors/fedex.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [FedEx Express Canada]() | |
| 20 | +- **Page carrières** : https://fedex.wd1.myworkdayjobs.com/FXE-Canada_External_Career_Site | |
| 21 | +- **Secteurs** : Logistique | |
| 22 | +- **Région** : Québec | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workday.md`](ats-workday.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `FedEx Express Canada` | | |
| 33 | +| `HOST` | `wd1` | | |
| 34 | +| `SITE` | `FXE-Canada_External_Career_Site` | | |
| 35 | +| `TENANT` | `fedex` | | |
| 36 | +- **Throttle** : 0.7 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **24 offres actives** de la source (base live, 2026-08-22 22:14 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 | 88 % | | |
| 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é, …) | 96 % | | |
| 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) | 88 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Livreur Temps Plein / Full Time Courier* — Montréal · SALAIRE: $20.93 de l'heure · parue le 2026-07-23. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_WORKDAY_DETAIL_LIMIT` | `300` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | + | |
| 84 | +- **Offres en base** : 24 (dont **24 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 24/24 actives (100 %) | |
| 86 | +- **GPS** : 21/24 actives (88 %) | |
| 87 | +- **Mode** : 0/24 actives (0 %) | |
| 88 | +- **Parution** : 24/24 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 24, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync fedex` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='fedex' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 FedEx Express Canada » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/fenetresconcept.md
+5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/fenetresconcept.md |
| 7 | 7 | Rôle : Fiche connecteur — Fenêtres Concept (employeur direct, ATS bamboohr) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -77,15 +77,15 @@ Exemple réel : *Commis à la réception de marchandise* — Québec · à parti | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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** : 2/2 actives (100 %) |
| 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-19 03:56 — trouvées 2, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 2, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
added
docs/connecteurs/financeit.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/financeit.md | |
| 7 | +Rôle : Fiche connecteur — Financeit (employeur direct, ATS workable) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Financeit (`financeit`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workable`](ats-workable.md) · Statut registre : actif · Connecteur : `jobka/connectors/financeit.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Financeit]() | |
| 20 | +- **Page carrières** : https://apply.workable.com/financeit | |
| 21 | +- **Secteurs** : Finance | |
| 22 | +- **Région** : Montréal | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workable.md`](ats-workable.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Financeit` | | |
| 33 | +| `ORG` | `financeit` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 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 | 100 % | | |
| 54 | +| `salary_label` — Libellé salaire | texte salarial original | 100 % | | |
| 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 : *Directeur(trice) régional(e) des ventes - Québec, T.-N.-L. et Maritimes* — Québec · Salaire de base annuel : 80 000 $ - 90 000 $ · parue le 2026-08-21. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 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-22 21:11 — trouvées 2, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync financeit` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='financeit' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 Financeit » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
added
docs/connecteurs/fiserv.md
+111 −0
@@ -0,0 +1,111 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/fiserv.md | |
| 7 | +Rôle : Fiche connecteur — Fiserv (employeur direct, ATS workday) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# Fiserv (`fiserv`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workday`](ats-workday.md) · Statut registre : actif · Connecteur : `jobka/connectors/fiserv.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [Fiserv]() | |
| 20 | +- **Page carrières** : https://fiserv.wd5.myworkdayjobs.com/EXT | |
| 21 | +- **Secteurs** : Finance | |
| 22 | +- **Région** : Laval | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workday.md`](ats-workday.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `Fiserv` | | |
| 33 | +| `HOST` | `wd5` | | |
| 34 | +| `SITE` | `EXT` | | |
| 35 | +| `TENANT` | `fiserv` | | |
| 36 | +- **Throttle** : 0.7 s entre requêtes. | |
| 37 | +- **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). | |
| 38 | + | |
| 39 | +## Champs → schéma | |
| 40 | + | |
| 41 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 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 | 50 % | | |
| 56 | +| `salary_label` — Libellé salaire | texte salarial original | 50 % | | |
| 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é, …) | 50 % | | |
| 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) | 100 % | | |
| 66 | + | |
| 67 | +Exemple réel : *Territory Manager \| Laval* — Québec · Présente dans plus de 100 pays dans le monde, avec un chiffre d’affaires de 19,1 G$ · parue le 2026-08-14. | |
| 68 | + | |
| 69 | +## Fréquence & budgets | |
| 70 | + | |
| 71 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 72 | +- **Throttle** : 0.7 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 73 | +- **Budgets / plafonds (variables d'environnement)** : | |
| 74 | + | |
| 75 | +| Variable | Défaut | | |
| 76 | +|---|---| | |
| 77 | +| `JOBKA_WORKDAY_DETAIL_LIMIT` | `300` | | |
| 78 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 79 | + | |
| 80 | +## Volumétrie & complétude live | |
| 81 | + | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | + | |
| 84 | +- **Offres en base** : 2 (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-08-22 21:11 — trouvées 2, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 91 | + | |
| 92 | +## Erreurs & dépannage | |
| 93 | + | |
| 94 | +Aucune erreur dans `sync_log` pour cette source. | |
| 95 | + | |
| 96 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync fiserv` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='fiserv' ORDER BY ts DESC LIMIT 5;"` | |
| 97 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 98 | + | |
| 99 | +## Licence / conformité | |
| 100 | + | |
| 101 | +**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 Fiserv » 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. | |
| 102 | + | |
| 103 | +## Historique | |
| 104 | + | |
| 105 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 106 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 107 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 108 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 109 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 110 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 111 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/flare.md
+5 −5
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/flare.md |
| 7 | 7 | Rôle : Fiche connecteur — Flare (cybersécurité) (employeur direct, ATS bamboohr) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **2 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 40 | 40 | |
| 41 | 41 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 42 | 42 | |---|---|---| |
@@ -77,15 +77,15 @@ Exemple réel : *Chef·effe d'équipe en développement logiciel, Plateforme Age | ||
| 77 | 77 | |
| 78 | 78 | ## Volumétrie & complétude live |
| 79 | 79 | |
| 80 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 80 | +*(mesuré le 2026-08-22 22:14 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** : 1/2 actives (50 %) |
| 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-19 03:56 — trouvées 2, +0, ~0, -0 | |
| 88 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 87 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 2, +0, ~0, -0 | |
| 88 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 89 | 89 | |
| 90 | 90 | ## Erreurs & dépannage |
| 91 | 91 | |
modified
docs/connecteurs/flinks.md
+10 −36
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/flinks.md |
| 7 | 7 | Rôle : Fiche connecteur — Flinks (employeur direct, ATS workable) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT 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-19 05:40 EDT 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-19 05:40 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 / … | 67 % | | |
| 53 | −| `salary` — Salaire ($) | bornes numériques normalisées $/h et $/an | 100 % | | |
| 54 | −| `salary_label` — Libellé salaire | texte salarial original | 100 % | | |
| 55 | −| `benefits` — Avantages | avantages sociaux publiés (JSON) | 0 % | | |
| 56 | −| `requirements` — Exigences | scolarité, expérience, langues (JSON) | 67 % | | |
| 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 : *Senior Full-Stack Developer* — Montréal · For experienced and qualified hires located in Canada, of senior (IC4) level, the compensa… · parue le 2026-06-29. | |
| 39 | +*Aucune offre active en base pour cette source.* | |
| 66 | 40 | |
| 67 | 41 | ## Fréquence & budgets |
| 68 | 42 | |
@@ -72,15 +46,15 @@ Exemple réel : *Senior Full-Stack Developer* — Montréal · For experienced a | ||
| 72 | 46 | |
| 73 | 47 | ## Volumétrie & complétude live |
| 74 | 48 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 49 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | 50 | |
| 77 | −- **Offres en base** : 3 (dont **3 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | −- **Salaire** : 3/3 actives (100 %) | |
| 79 | −- **GPS** : 3/3 actives (100 %) | |
| 80 | −- **Mode** : 3/3 actives (100 %) | |
| 81 | −- **Parution** : 3/3 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:56 — trouvées 3, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 51 | +- **Offres en base** : 3 (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-08-22 21:11 — trouvées 0, +0, ~0, -0 | |
| 57 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 84 | 58 | |
| 85 | 59 | ## Erreurs & dépannage |
| 86 | 60 | |
added
docs/connecteurs/flo_addenergie.md
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +<!-- | |
| 2 | +============================================================================= | |
| 3 | +Job·Ka — Groupe KA | |
| 4 | +Auteur : Simon-Pierre Boucher | |
| 5 | +Contact : contact@spboucher.ai | |
| 6 | +Fichier : docs/connecteurs/flo_addenergie.md | |
| 7 | +Rôle : Fiche connecteur — FLO (AddÉnergie) (employeur direct, ATS workable) | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | + relancer le script pour régénérer. | |
| 10 | +============================================================================= | |
| 11 | +--> | |
| 12 | + | |
| 13 | +# FLO (AddÉnergie) (`flo_addenergie`) | |
| 14 | + | |
| 15 | +**Employeur direct** · Plateforme ATS : [`workable`](ats-workable.md) · Statut registre : actif · Connecteur : `jobka/connectors/flo_addenergie.py` | |
| 16 | + | |
| 17 | +## Description | |
| 18 | + | |
| 19 | +- **Site** : [FLO (AddÉnergie)]() | |
| 20 | +- **Page carrières** : https://apply.workable.com/flo-addenergie | |
| 21 | +- **Secteurs** : Énergie | |
| 22 | +- **Région** : Québec | |
| 23 | +- Offres marquées **« Offre directe »** dans l'app (badge) : la candidature se fait chez l'employeur, jamais via un intermédiaire. | |
| 24 | + | |
| 25 | +## Accès | |
| 26 | + | |
| 27 | +- **Mécanique** : voir la fiche plateforme [`ats-workable.md`](ats-workable.md) — API JSON publique du site carrières, backend `requests` direct (Scrapfly seulement si indiqué sur la fiche plateforme). | |
| 28 | +- **Identifiants du tenant** (attributs du connecteur) : | |
| 29 | + | |
| 30 | +| Attribut | Valeur | | |
| 31 | +|---|---| | |
| 32 | +| `EMPLOYER` | `FLO (AddÉnergie)` | | |
| 33 | +| `ORG` | `flo-addenergie` | | |
| 34 | +- **Throttle** : 1.0 s entre requêtes. | |
| 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 | + | |
| 37 | +## Champs → schéma | |
| 38 | + | |
| 39 | +Complétude mesurée sur les **11 offres actives** de la source (base live, 2026-08-22 22:14 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 | 18 % | | |
| 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) | 9 % | | |
| 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é, …) | 73 % | | |
| 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 : *Analyste développeur en support logiciel* — Québec · ∅ · parue le 2026-08-20. | |
| 66 | + | |
| 67 | +## Fréquence & budgets | |
| 68 | + | |
| 69 | +- **Cadence** : resynchronisation **horaire** (PM2 `job-ka-sync` = `run.py watch 60`), suivie du géocodage en lot puis de la déduplication inter-sources. | |
| 70 | +- **Throttle** : 1.0 s minimum entre deux requêtes vers la source (`request_delay`). | |
| 71 | +- Cache BD des pages détail (`detail_cache`) : le détail d'une offre n'est re-téléchargé que si sa ligne de liste change. | |
| 72 | + | |
| 73 | +## Volumétrie & complétude live | |
| 74 | + | |
| 75 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 76 | + | |
| 77 | +- **Offres en base** : 11 (dont **11 actives**, 0 masquées comme doublons `dup_of`) | |
| 78 | +- **Salaire** : 0/11 actives (0 %) | |
| 79 | +- **GPS** : 11/11 actives (100 %) | |
| 80 | +- **Mode** : 2/11 actives (18 %) | |
| 81 | +- **Parution** : 11/11 actives (100 %) | |
| 82 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 23, +0, ~18, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 5 | |
| 84 | + | |
| 85 | +## Erreurs & dépannage | |
| 86 | + | |
| 87 | +Aucune erreur dans `sync_log` pour cette source. | |
| 88 | + | |
| 89 | +- Rejouer un sync isolé : `.venv/bin/python run.py sync flo_addenergie` puis inspecter `sync_log` : `sqlite3 data/jobka.db "SELECT * FROM sync_log WHERE source='flo_addenergie' ORDER BY ts DESC LIMIT 5;"` | |
| 90 | +- Garde-fous : une source qui retourne ≤ 25 % de sa médiane historique déclenche une alerte et les retraits sont suspendus ; une offre doit manquer 2 syncs consécutifs avant `active=0`. | |
| 91 | + | |
| 92 | +## Licence / conformité | |
| 93 | + | |
| 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 FLO (AddÉnergie) » 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 | + | |
| 96 | +## Historique | |
| 97 | + | |
| 98 | +**Mission connecteurs du 2026-08-18** — passage de 135 à 217 employeurs directs connectés, de 9 à 17 plateformes ATS, ajout de 3 portails agrégateurs et du canal de dépôt direct : | |
| 99 | +- `fd4bfc8` qualité lieux : rejet des villes hors Québec, bâtiments McGill → Montréal ; | |
| 100 | +- `5a66f48` +59 employeurs (sondage massif d'ATS + détection de pages carrières) ; | |
| 101 | +- `4917d57` 8 nouveaux ATS (Taleo, Njoyn, UltiPro, iCIMS, SuccessFactors, ADP WFN, Digital Recruiters, Workland) + 23 employeurs publics/parapublics ; | |
| 102 | +- `f6e7571` portails Guichet-Emplois, Jobillico, Espresso-Jobs — l'offre directe gagne toujours la canonique (dédup) ; | |
| 103 | +- `744cbfc` badge « Offre directe », stats directes/portails, dépôt direct employeurs ; | |
| 104 | +- `1604ff9` reprise sur coupure WAF Guichet-Emplois (retry + acquis partiel). | |
modified
docs/connecteurs/fondsftq.md
+10 −10
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/fondsftq.md |
| 7 | 7 | Rôle : Fiche connecteur — Fonds de solidarité FTQ (employeur direct, ATS workday) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **8 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -79,15 +79,15 @@ Exemple réel : *Expert(e) sénior(e) en gestion des identités et des accès (G | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 EDT dans `data/jobka.db`)* | |
| 83 | 83 | |
| 84 | −- **Offres en base** : 10 (dont **10 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | −- **Salaire** : 0/10 actives (0 %) | |
| 86 | −- **GPS** : 10/10 actives (100 %) | |
| 87 | −- **Mode** : 10/10 actives (100 %) | |
| 88 | −- **Parution** : 10/10 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 03:56 — trouvées 10, +0, ~7, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 14 | |
| 84 | +- **Offres en base** : 10 (dont **8 actives**, 0 masquées comme doublons `dup_of`) | |
| 85 | +- **Salaire** : 0/8 actives (0 %) | |
| 86 | +- **GPS** : 8/8 actives (100 %) | |
| 87 | +- **Mode** : 8/8 actives (100 %) | |
| 88 | +- **Parution** : 8/8 actives (100 %) | |
| 89 | +- **Dernier sync** : 2026-08-22 21:11 — trouvées 8, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 73 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
modified
docs/connecteurs/framestore.md
+13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/framestore.md |
| 7 | 7 | Rôle : Fiche connecteur — Framestore (employeur direct, ATS recruitee) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 9 | 9 | relancer le script pour régénérer. |
| 10 | 10 | ============================================================================= |
| 11 | 11 | --> |
@@ -36,7 +36,7 @@ Généré : 2026-08-19 05:40 EDT 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-19 05:40 EDT). | |
| 39 | +Complétude mesurée sur les **10 offres actives** de la source (base live, 2026-08-22 22:14 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é | 100 % | |
| 51 | 51 | | `work_mode` — Mode | presentiel / hybride / teletravail | 100 % | |
| 52 | −| `employment_type` — Type | temps_plein / temps_partiel / … | 22 % | | |
| 52 | +| `employment_type` — Type | temps_plein / temps_partiel / … | 20 % | | |
| 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 | 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é, …) | 67 % | | |
| 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 | 63 | | `gps` — GPS | lat/lng (géocodage sans invention) | 100 % | |
| 64 | 64 | |
| 65 | −Exemple réel : *Directeur·trice technique des éclairages \| Lighting TD* — Montréal · ∅ · parue le 2026-08-14. | |
| 65 | +Exemple réel : *Generaliste Blender - Artiste au development visuel \| Blender Generalist - Visual Develop…* — Montréal · ∅ · parue le 2026-08-21. | |
| 66 | 66 | |
| 67 | 67 | ## Fréquence & budgets |
| 68 | 68 | |
@@ -72,15 +72,15 @@ Exemple réel : *Directeur·trice technique des éclairages \| Lighting TD* — | ||
| 72 | 72 | |
| 73 | 73 | ## Volumétrie & complétude live |
| 74 | 74 | |
| 75 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 75 | +*(mesuré le 2026-08-22 22:14 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** : 9/9 actives (100 %) | |
| 80 | −- **Mode** : 9/9 actives (100 %) | |
| 81 | −- **Parution** : 9/9 actives (100 %) | |
| 82 | −- **Dernier sync** : 2026-08-19 03:56 — trouvées 9, +0, ~0, -0 | |
| 83 | −- **Syncs enregistrés** (`sync_log`) : 26 | |
| 77 | +- **Offres en base** : 10 (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-08-22 21:11 — trouvées 10, +0, ~0, -0 | |
| 83 | +- **Syncs enregistrés** (`sync_log`) : 85 | |
| 84 | 84 | |
| 85 | 85 | ## Erreurs & dépannage |
| 86 | 86 | |
modified
docs/connecteurs/fruitdor.md
+13 −13
@@ -5,7 +5,7 @@ Auteur : Simon-Pierre Boucher | ||
| 5 | 5 | Contact : contact@spboucher.ai |
| 6 | 6 | Fichier : docs/connecteurs/fruitdor.md |
| 7 | 7 | Rôle : Fiche connecteur — Fruit d'Or (employeur direct, ATS ultipro) |
| 8 | −Généré : 2026-08-19 05:40 EDT par scripts/gen_connector_docs.py — NE PAS ÉDITER, | |
| 8 | +Généré : 2026-08-22 22:14 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-19 05:40 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-19 05:40 EDT). | |
| 41 | +Complétude mesurée sur les **14 offres actives** de la source (base live, 2026-08-22 22:14 EDT). | |
| 42 | 42 | |
| 43 | 43 | | Champ (`jobs.*`) | Rôle | Complétude | |
| 44 | 44 | |---|---|---| |
@@ -58,13 +58,13 @@ Complétude mesurée sur les **12 offres actives** de la source (base live, 2026 | ||
| 58 | 58 | | `requirements` — Exigences | scolarité, expérience, langues (JSON) | 0 % | |
| 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 % | |
| 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 : *Conseiller(ère) Ressources humaines* — Plessisville · ∅ · parue le 2026-08-17. | |
| 67 | +Exemple réel : *Opérateur en transformation alimentaire* — Plessisville · ∅ · parue le 2026-08-19. | |
| 68 | 68 | |
| 69 | 69 | ## Fréquence & budgets |
| 70 | 70 | |
@@ -79,15 +79,15 @@ Exemple réel : *Conseiller(ère) Ressources humaines* — Plessisville · ∅ | ||
| 79 | 79 | |
| 80 | 80 | ## Volumétrie & complétude live |
| 81 | 81 | |
| 82 | −*(mesuré le 2026-08-19 05:40 EDT dans `data/jobka.db`)* | |
| 82 | +*(mesuré le 2026-08-22 22:14 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** : 0/12 actives (0 %) | |
| 87 | −- **Mode** : 0/12 actives (0 %) | |
| 88 | −- **Parution** : 12/12 actives (100 %) | |
| 89 | −- **Dernier sync** : 2026-08-19 04:48 — trouvées 12, +12, ~0, -0 | |
| 90 | −- **Syncs enregistrés** (`sync_log`) : 1 | |
| 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-22 21:11 — trouvées 14, +0, ~0, -0 | |
| 90 | +- **Syncs enregistrés** (`sync_log`) : 60 | |
| 91 | 91 | |
| 92 | 92 | ## Erreurs & dépannage |
| 93 | 93 | |
Diff truncated — file too large.