Imported from havartdamien-del/job_organizer (
AGENTS.md). Install upstream withnpx skills add havartdamien-del/job_organizer. Copyright stays with the author.
Job Organizer Agent
📋 Description du projet
Job Organizer est une application web conçue pour :
- Récupérer les offres d'emploi depuis internet via scraping
- Organiser et cataloguer les offres trouvées
- Analyser la pertinence de chaque offre
- Utiliser l'IA pour extraire et valoriser les compétences clés
Architecture générale
- Backend : Django + MySQL (dans Docker)
- Frontend : HTML/Templates Django
- IA : Ollama (modèles LLM pour analyse)
- Déploiement : Docker Compose
🎯 Plan d'implémentation - 5 étapes
Étape 1️⃣ : Modèle de Base de Données
Objectif : Créer la structure de base pour stocker les offres d'emploi
Ce qui sera fait :
- Modèle
JobOfferDjango avec les champs essentiels :- Informations principales : titre, entreprise, description
- Détails : localisation, type de contrat, salaire
- Source : URL, source de scraping, ID externe
- Suivi : statut, score de pertinence, notes
- Relations : compétences requises (ManyToMany avec
Skill)
- Créer la migration Django correspondante
- Configuration de l'admin Django pour gérer les offres
Fichiers à modifier/créer :
django/src/job_organizer/models.py— Ajouter modèleJobOfferdjango/src/job_organizer/admin.py— Enregistrer le modèle dans l'admindjango/src/job_organizer/migrations/000X_*.py— Migration auto-générée
Étape 2️⃣ : Guide de Scraping
Objectif : Mettre en place la structure et la documentation pour le scraping
Ce qui sera fait :
- Créer un module
scrapers/avec structure de base - Implémenter un scraper générique (interface/classe abstraite)
- Créer des scrapers spécifiques pour sources principales (ou modèles)
- Documentation sur comment ajouter de nouvelles sources
- Commande Django pour tester et lancer le scraping
- Système de logging et gestion des erreurs
Fichiers à créer/modifier :
django/src/job_organizer/scrapers/__init__.pydjango/src/job_organizer/scrapers/base.py— Classe abstraitedjango/src/job_organizer/scrapers/indeed.py— Exemple scraperdjango/src/job_organizer/management/commands/scrape_jobs.py— Commande DjangoSCRAPING_GUIDE.md— Documentation pour ajouter sources
Étape 3️⃣ : Interface d'Affichage
Objectif : Créer une interface pour visualiser et explorer les offres
Ce qui sera fait :
- API REST endpoints (GET/POST) pour les offres d'emploi
- Templates HTML pour afficher :
- Liste des offres avec filtres (statut, source, entreprise, etc.)
- Détail d'une offre avec compétences requises
- Tableau de bord avec statistiques (nombre offres, sources, etc.)
- Système de pagination et recherche
- Mise en style responsive (CSS)
Fichiers à créer/modifier :
django/src/job_organizer/views.py— Vues API et webdjango/src/job_organizer/serializers.py— Sérialisation JSON (DRF)django/src/job_organizer/urls.py— Routingdjango/src/job_organizer/templates/job_organizer/— Templates HTMLdjango/src/home/templates/home/index.html— Dashboard principal
Étape 4️⃣ : Système d'Analyse de Pertinence
Objectif : Évaluer automatiquement la pertinence de chaque offre
Ce qui sera fait :
- Service d'analyse basé sur critères :
- Correspondance avec skills de l'utilisateur
- Localisation acceptée
- Niveau de salaire
- Type de contrat préféré
- Utiliser Ollama pour analyse plus sophistiquée si nécessaire
- Scoring de 0-100 et notes explicatives
- Commande Django pour analyser les offres existantes
- API pour mettre à jour le score d'une offre
Fichiers à créer/modifier :
django/src/job_organizer/analyzers/__init__.pydjango/src/job_organizer/analyzers/relevance.py— Logique d'analysedjango/src/job_organizer/management/commands/analyze_offers.py— Commande- Ajouter champ
relevance_scoreetrelevance_notesau modèle (déjà prévu)
Étape 5️⃣ : Système IA pour Compétences
Objectif : Extraire et valoriser les compétences clés avec IA
Ce qui sera fait :
- Service d'analyse avec Ollama pour :
- Extraire les compétences mentionnées dans l'offre
- Identifier les compétences clés à mettre en avant
- Générer un résumé des compétences requises
- Comparer avec les skills de l'utilisateur
- Créer une relation
JobOfferSkillAnalysispour stocker les résultats - API endpoint pour analyser une offre spécifique
- Templates pour afficher l'analyse IA
Fichiers à créer/modifier :
django/src/job_organizer/ai_services/__init__.pydjango/src/job_organizer/ai_services/ollama_analyzer.py— Intégration Ollamadjango/src/job_organizer/models.py— AjouterJobOfferSkillAnalysismodeldjango/src/job_organizer/management/commands/ai_analyze_offers.py
🛠️ Commandes utiles
# Lancer le projet
cd docker
docker compose up -d
# Créer migrations
docker compose exec django python manage.py makemigrations
docker compose exec django python manage.py migrate
# Accès à l'admin Django
# http://localhost:8001/admin
# Lancer le scraping
docker compose exec django python manage.py scrape_jobs
# Analyser les offres
docker compose exec django python manage.py analyze_offers
📊 Structure de la base de données
Skill (déjà existant)
├── id
├── name
├── level
└── ...
JobOffer (à créer)
├── id
├── title
├── company_name
├── description
├── location
├── contract_type
├── salary_min / salary_max
├── url (unique)
├── source
├── status (new, viewed, relevant, applied, rejected)
├── relevance_score (0-100)
├── published_at
├── created_at / updated_at
└── required_skills (M2M → Skill)
JobOfferSkillAnalysis (étape 5)
├── job_offer (FK)
├── skill (FK)
├── importance_level
└── analysis_notes
✅ Validation à chaque étape
- Étape 1 : Admin Django fonctionne, créer une offre test manuellement
- Étape 2 : Commande scraping fonctionne, au moins une offre récupérée
- Étape 3 : Interface affiche les offres, filtres fonctionnent
- Étape 4 : Score de pertinence calculé et affiché
- Étape 5 : IA génère analyse des compétences
🚀 Notes importantes
- Docker Compose utilise le fichier
docker/docker-compose.yml - Django est en
django/src/avec appjob_organizerexistante - MySQL est déjà configurée pour persister les données
- Ollama est déjà disponible dans la stack Docker
- Démarrer par l'étape 1 avant de passer à l'étape 2