Projet 02 / 04 · Python · IA

Agent de veille emploi

180 offres scrapées chaque matin depuis 3 sources. 2 à 5 qualifiées par Claude livrées en boîte mail. Zéro action manuelle de tri.

📧 Voir l'email digest en production →
~180offres / jour
2–5livrées ≥ 8/10
7h00chaque matin
7j/7autonome
Veille quotidienne : 45 min manuelles → 5 min de lecture · ~3h récupérées / semaine
Genèse du projet

Diagnostic, réflexion, décision

🔍
Diagnostic
45 minutes par jour à parcourir France Travail, Cadremploi et Adzuna pour finalement ne garder que 2 ou 3 offres pertinentes. Un travail de tri entièrement répétitif, sans valeur ajoutée, que la plupart des cadres en recherche d'emploi effectuent chaque matin par manque d'alternative.
💡
Réflexion
Un agent autonome peut faire ce travail de tri mieux et plus vite qu'un humain — mais il ne peut pas décider à sa place. La vraie valeur n'est pas dans le scraping, c'est dans le scoring : donner à chaque offre un score justifié qui permet une décision rapide. Et relier directement l'offre retenue au générateur de candidature.
Résultat
180 offres agrégées chaque matin, 2 à 5 livrées en boîte mail à 7h00 avec score, justification et actions en un clic. Le tri est automatisé, la décision de candidater reste humaine. 45 minutes quotidiennes récupérées, concentrées là où elles ont de la valeur.
Problème résolu

Le signal noyé dans le bruit

La recherche d'emploi senior en communication génère chaque jour des dizaines d'offres sur des plateformes disparates. Les trier manuellement prenait 30 à 45 minutes par jour — pour ne garder que 2 ou 3 offres réellement pertinentes. Un travail répétitif, peu qualifié, que l'IA peut faire seule.

Règle 80/20 — L'humain reste le décideur
L'agent gère 100% du volume : scraping, déduplication, scoring, formatage, envoi. L'humain décide de ce qui mérite une candidature. Le tri est automatisé, le jugement reste humain. C'est là que l'IA crée de la valeur en communication : elle élimine le bruit pour que vous puissiez vous concentrer sur le signal.
Architecture

Comment ça fonctionne

Déclenchement automatique — 7h00
Windows Task Scheduler (compte SYSTEM) lance le pipeline chaque matin, même si le PC était en veille. Aucune session utilisateur nécessaire.
🔍
Scraping multi-sources en parallèle
France Travail API sur 8 départements IDF, Adzuna API avec pagination, Cadremploi via flux RSS avec filtrage mots-clés.
~130 offres France Travail · Adzuna · Cadremploi RSS
🔁
Déduplication intelligente
Trois fichiers JSON : seen.json (déjà traitées), applied.json (archivées), saved.json (relire demain). Une offre sauvegardée revient chaque jour jusqu'à action.
🤖
Scoring Claude Sonnet — profil détaillé
Chaque offre est soumise à Claude avec profil précis : titre ciblé, zone IDF, compétences clés, secteurs exclus, contrats acceptés. Résultat : score /10, tag et justification.
Score · Prioritaire / À regarder / Ignorer · Justification
📧
Email digest HTML — actions en un clic
Envoi via Gmail API (OAuth 2.0). Chaque carte : score, justification IA, 4 boutons — archiver, sauvegarder, lire l'annonce, ouvrir dans le générateur avec le texte pré-rempli.
Défis techniques

Les vrais problèmes à résoudre

Exécution sous compte SYSTEM Windows sans session utilisateur
Pas d'accès à C:\Users\ — environnement virtuel Python dans C:\ProgramData\, tokens OAuth isolés, redémarrage propre géré dans le batch.
Bug WMIC / encodage UTF-16LE en contexte SYSTEM
wmic os get localdatetime génère des noms de fichiers invalides et des échecs silencieux. Résolu via PowerShell Get-Date -Format yyyyMMdd.
Injection HTML sécurisée dans le générateur de candidature
Le générateur contient </body> dans des chaînes JS. Utilisation de rfind() pour cibler uniquement la vraie balise de fermeture.
Fiabilité sur laptop en veille
DisallowStartIfOnBatteries=false + StartWhenAvailable=true — la tâche se déclenche sur batterie et au réveil si le PC dormait à 7h00.
Stack technique

Technologies utilisées

CatégorieOutil
LangagePython 3.13
IA / ScoringClaude Sonnet · API Anthropic
EmailGmail API · OAuth 2.0 · google-api-python-client
HTTP / Serveur localurllib · http.server (stdlib)
RSS / Scrapingfeedparser · BeautifulSoup4
PlanificationWindows Task Scheduler · SYSTEM
Résultats

Ce que ça produit concrètement

~180offres agrégées chaque matin depuis 3 sources
2–5offres qualifiées livrées (seuil ≥ 8/10)
~3hrécupérées par semaine sur la veille manuelle
1 clicpour archiver, sauvegarder ou ouvrir dans le générateur
📸 En production — Email digest reçu à 7h00
Email digest agent de veille

Email réel reçu le vendredi 24 avril 2026 · 184 offres scrapées · 3 qualifiées ≥ 8/10 · Actions en 1 clic