# Recherche d’emploi à l’étranger

> 3 494 annonces dans cinq pays, ramenées à 178 annonces retenues. Une recherche personnelle devenue un workflow de données réutilisable.

Projet personnel · Recherche et filtrage · Septembre 2026

Rubrique: Outils & recherche

[Ouvrir dans le portfolio interactif](<https://zaki.somehow.engineer/#built/25>)

[English](<https://zaki.somehow.engineer/read/en/job-search-abroad.md>)

## En bref

| Indicateur | Valeur |
| --- | --- |
| Mon rôle | Workflow, filtres et revue |
| Périmètre | Cinq pays d’Asie |
| Outils | JavaScript · CSV · Apps Script |
| Période | Septembre 2026 |

## Donner une forme utile à une recherche vaste

Pour chercher un emploi à l’étranger, reconnaître un intitulé ne suffit pas. Un poste dans la data peut cacher une langue de travail obligatoire, des responsabilités senior ou un minimum d’expérience qui l’écarte. Je voulais comparer les exigences réelles à mon profil sans tout reprendre depuis le début à chaque annonce.

J’ai travaillé à partir d’exports LinkedIn collectés en Chine, au Japon, en Corée du Sud, en Thaïlande et au Vietnam. Les fichiers conservés contiennent 3 494 identifiants d’annonce distincts. Le filtrage et la revue aboutissent à 178 annonces : 75 prioritaires et 103 en seconde sélection. Cela représente 5,1 % des annonces collectées, pas un taux d’entretien ou d’embauche.

| Valeur | Indicateur |
| --- | --- |
| 3 494 | Annonces sources distinctes |
| 5 | Pays explorés |
| 178 | Annonces dans les listes finales |
| 5,1 % | Part retenue par annonce |

## Vérifier ce qui a réellement été collecté

J’ai conservé les exports d’origine à part des sélections intermédiaires, des rejets et des listes finales. Les identifiants permettent de retrouver la source d’une décision et d’éviter de compter une nouvelle revue comme une nouvelle offre collectée.

L’archive Chine montre bien l’intérêt de cette séparation. Elle contient les mêmes 981 identifiants que l’export principal, mais préserve 913 descriptions absentes de celui-ci. Le rapprochement par identifiant récupère ces textes sans ajouter d’annonce. Sur les cinq pays, 3 301 enregistrements disposent d’une description conservée et 193 en sont encore dépourvus.

### Images et médias

[Volume et couverture du jeu de données conservé. Les descriptions de l’archive Chine sont rapprochées par identifiant. Un texte présent peut rester incomplet ; ces échantillons ne mesurent pas le marché de l’emploi de chaque pays.](<https://zaki.somehow.engineer/content/assets/job-search/case-study/dataset-coverage.fr.png>)

Répartition des annonces : Chine 981, Japon 1 000, Corée du Sud 350, Thaïlande 569 et Vietnam 594, avec au total 3 301 descriptions disponibles et 193 manquantes.

[SVG](<https://zaki.somehow.engineer/content/assets/job-search/case-study/dataset-coverage.fr.svg>)

Crédit: Graphique créé à partir de mes exports et revues conservés de septembre 2026.

## Filtrer selon un profil, pas selon un intitulé

La recherche s’appuyait sur un diplôme d’ingénieur, de l’expérience en Python et JavaScript, un anglais C1 et un profil junior évalué prudemment. J’étais ouvert aux métiers proches et à l’apprentissage d’une nouvelle stack, tout en devant comprendre si l’employeur pouvait accompagner un recrutement international.

Le workflow séparait trois questions : est-ce que je remplis les exigences écrites, est-ce que mon profil est crédible pour le travail, et est-ce que le recrutement est envisageable en pratique ? La langue, l’expérience obligatoire et les restrictions des programmes diplômés passaient avant une revue plus précise des compétences et du domaine. Une information absente restait inconnue.

JavaScript · Lecture de CSV · Filtres contextuels · Notes de justification · Google Apps Script

Des annonces collectées à une liste de candidatures

1. **Collecter et conserver** — Garder les champs et identifiants d’origine ; distinguer les sources des fichiers dérivés.
2. **Lire et filtrer** — Nettoyer les marqueurs de collecte et interpréter les exigences de langue, d’expérience et d’éligibilité.
3. **Relire et récupérer** — Examiner les pistes plausibles, les rejets suspects et les informations manquantes.
4. **Prioriser** — Conserver les raisons, les incertitudes et la prochaine action avec chaque opportunité.

Filtres JavaScript et tableaux de revue conservés, avec assistance de l’IA et relecture humaine. Il s’agit du workflow de sélection, pas de candidatures automatiques.

## Chercher ce que le premier filtre a raté

Le plus intéressant était dans les exceptions. Des marqueurs de collecte pouvaient absorber le premier chiffre d’une plage d’expérience. « 0–2 ans » ressemblait alors à un minimum strict de deux ans. Le code conserve les plages, distingue les sections obligatoires des préférences et vérifie ce que le nombre décrit réellement.

Le vocabulaire demandait la même attention. Une annonce qui mentionne un collègue senior ne décrit pas forcément un poste senior. « Jeunes diplômés bienvenus » ne veut pas dire « réservé aux jeunes diplômés ». Au Vietnam, revenir sur cette distinction a récupéré trois annonces : une prioritaire et deux en seconde sélection. Le groupe à examiner est passé de 210 à 213 avant la revue détaillée.

### Images et médias

[Une correction vérifiable dans les fichiers : trois annonces réintégrées dans la revue, toutes conservées dans les listes finales. Les 39 annonces retenues représentent 38 opportunités distinctes selon les clés conservées.](<https://zaki.somehow.engineer/content/assets/job-search/case-study/vietnam-recovery.fr.png>)

Étapes au Vietnam : 594 annonces collectées, 210 après la première sélection, 213 après correction du filtre diplômés et 39 annonces retenues au final.

[SVG](<https://zaki.somehow.engineer/content/assets/job-search/case-study/vietnam-recovery.fr.svg>)

Crédit: Graphique créé à partir de mes exports et revues conservés de septembre 2026.

## Une sélection qui explique ses choix

Les listes finales gardent les éléments de preuve et la prochaine action à côté du poste. Prioritaire signifie que la revue conservée donnait une raison crédible de candidater. La seconde sélection garde une piste possible en signalant un écart technique, métier ou pratique. Les catégories Strong et Technical Stretch de Corée sont alignées sur ces deux groupes dans le graphique.

Les 178 identifiants correspondent à 175 opportunités après dédoublonnage au sein de chaque pays : 12 en Chine, 45 au Japon, 4 en Corée du Sud, 76 en Thaïlande et 38 au Vietnam. Plusieurs annonces peuvent pointer vers la même opportunité. La revue utilise les clés conservées lorsqu’elles existent et le couple entreprise/intitulé pour les listes plus simples de Chine et de Corée.

Ces résultats datent de septembre 2026. La couverture de collecte et la profondeur de revue varient selon le pays ; l’accompagnement du recrutement international ou l’ouverture actuelle du poste peuvent rester à vérifier. La sortie utile est un point de départ argumenté pour candidater, avec les questions restantes.

### Images et médias

[75 annonces prioritaires et 103 en seconde sélection. Ce sont des catégories de revue conservées, pas une confirmation d’éligibilité, un intérêt de l’employeur ou une comparaison des conditions nationales d’embauche.](<https://zaki.somehow.engineer/content/assets/job-search/case-study/shortlists.fr.png>)

Annonces prioritaires et de seconde sélection : Chine 8 et 4 ; Japon 11 et 34 ; Corée du Sud 2 et 2 ; Thaïlande 37 et 41 ; Vietnam 17 et 22.

[SVG](<https://zaki.somehow.engineer/content/assets/job-search/case-study/shortlists.fr.svg>)

Crédit: Graphique créé à partir de mes exports et revues conservés de septembre 2026.

## Garder le suivi relié à la recherche

Un outil Google Apps Script séparé traite le problème d’organisation suivant : les notifications LinkedIn reçues dans Gmail. Il importe les emails portant un libellé dans Google Sheets et utilise l’identifiant du message Gmail pour éviter les doublons.

La feuille conserve les métadonnées de notification, les liens de profil et de conversation, puis des champs pour l’entreprise, l’identifiant du poste, le statut et la prochaine action. Le rythme configuré est de quinze minutes. Quand l’email ne contient pas le message lui-même, le script enregistre la notification et laisse ouvrir la conversation manuellement. Les réponses et les candidatures restent ma décision.

## Une recherche personnelle devenue une méthode

J’en ai tiré des listes par pays, des raisons que je peux examiner et un prompt de sélection réutilisable avec un autre profil ou un autre jeu de données. Le processus prévoit une seconde lecture des rejets comme des annonces retenues, pour qu’une règle pratique ne devienne pas une conclusion qu’on ne questionne plus.

Le résultat que je peux montrer est la recherche organisée : plusieurs milliers d’annonces ramenées à un ensemble de pistes gérable, en conservant les sources et les incertitudes. Les éléments disponibles ne permettent pas de dire combien de candidatures ont mené à un entretien ou une offre.
