Pour optimiser ma recherche d’emploi, j’ai développé un outil qui va bien au-delà d’un simple script. Il s’agit d’un système complet en deux phases qui allie la puissance de l’automatisation et de l’IA pour la préparation des candidatures, tout en conservant un contrôle humain essentiel grâce à une interface de révision web locale.
L’objectif n’est pas d’envoyer des candidatures à l’aveugle, mais de préparer intelligemment le terrain pour que je puisse valider et envoyer chaque candidature en toute confiance.
Un Workflow en Deux Phases
Le projet est architecturé autour de deux composants distincts qui travaillent ensemble :
1. Phase 1 : Le Worker Automatisé (Script Python)
Ce script principal, emploi_territorial-automation.py
, tourne en arrière-plan pour effectuer le travail préparatoire :
- Surveillance des offres : Il lit de multiples flux RSS du site
emploi-territorial.fr
pour détecter les nouvelles annonces. - Scraping et Extraction : Il visite chaque nouvelle offre pour en extraire les informations clés (employeur, lieu, description complète, et email de contact).
- Stockage Centralisé : Toutes les données sont enregistrées et suivies dans une base de données SQLite, évitant les doublons et permettant une gestion d’état robuste.
- Génération par IA : Il utilise l’API Deepseek pour générer une lettre de motivation, un objet et un corps d’email entièrement personnalisés pour chaque offre.
2. Phase 2 : L’Interface de Contrôle et d’Envoi (Application Flask)
Une fois les candidatures préparées, une application web locale prend le relais. Elle me fournit un tableau de bord pour :
- Visualiser les candidatures prêtes : Toutes les offres préparées sont affichées sous forme de cartes claires et concises.
- Réviser le contenu : Je peux consulter la lettre de motivation (HTML/PDF) et le corps de l’email générés par l’IA.
- Compléter les informations : Si le script n’a pas trouvé d’email, l’interface me permet de le saisir manuellement.
- Envoyer ou Archiver : D’un simple clic, je peux déclencher l’envoi de l’email (avec le CV en pièce jointe) ou archiver l’offre si elle ne m’intéresse pas.
Focus Technique : Le Raffinement Itératif par IA
Une des fonctionnalités les plus avancées de ce projet est le processus de génération de la lettre de motivation. Au lieu d’une simple génération, j’ai implémenté un cycle de raffinement itératif :
- Génération : Le script demande à l’IA de rédiger une première ébauche de la lettre.
- Auto-Critique : Il demande ensuite à un autre modèle IA (ou au même avec un prompt différent) d’évaluer cette ébauche et de lui attribuer un score de qualité (sur 10), en fournissant des axes d’amélioration.
- Raffinement : Si le score est inférieur à la cible (ex: 8/10), le script renvoie la lettre et les critiques à l’IA en lui demandant de la réécrire pour l’améliorer. Ce cycle (configurable) garantit que la lettre présentée pour ma révision manuelle est déjà d’une qualité très élevée.
Principales Réalisations
- Architecture en Deux Phases : Conception d’un système découplé avec un script backend pour la préparation et une interface web Flask pour la validation, garantissant le contrôle humain.
- Raffinement Itératif par IA : Développement d’un cycle “génération-critique-amélioration” pour les lettres de motivation, visant un score de qualité avant de les présenter à l’utilisateur.
- Interface de Révision Complète : Création d’un tableau de bord web local avec Flask, permettant la visualisation, la modification, l’envoi et l’archivage des candidatures.
- Gestion d’État Robuste : Utilisation d’une base de données SQLite pour un suivi précis de chaque candidature (statuts :
ready_for_review
,sent
,archived
,failed
, etc.). - Configuration Flexible : Le projet est entièrement configurable via un fichier
.env
et des templates de prompts, le rendant adaptable et sécurisé. - Automatisation Complète de la Préparation : Le système gère de bout en bout la détection, l’analyse, la génération de contenu et la création de documents (HTML/PDF), laissant uniquement la décision finale à l’utilisateur.