ITSkillsCenter
Intelligence Artificielle

Claude IA pour l’analyse stratégique d’entreprise

12 دقائق للقراءة
Claude IA pour l’analyse stratégique d’entreprise

Ce que vous saurez faire à la fin

  1. Construire un pipeline d’analyse de CV automatisé avec Claude IA, depuis l’ingestion PDF jusqu’au scoring multi-critères restitué dans votre ATS
  2. Anonymiser systématiquement les CV pour réduire les biais (genre, origine, âge, photo) avant tout passage IA
  3. Rédiger des prompts de scoring rigoureux qui notent chaque CV sur des critères pondérés et fournissent une justification courte par critère
  4. Utiliser la Batch API d’Anthropic pour traiter 100 CV à la fois à coût divisé par 2
  5. Mettre en place une grille d’audit anti-discrimination conforme à la Loi sénégalaise 91-33 sur le travail

Durée : 5h. Pré-requis : compte Claude API avec 30 USD de crédits initiaux (environ 18 000 FCFA), Python 3.10+, bibliothèque pdfplumber pour l’extraction texte, un ATS ou tableur Google Sheets pour le suivi, votre fiche de poste détaillée, validation préalable du DRH et du CSE si vous en avez un, conformité avec la Loi 2008-12 sur la protection des données et la CDP du Sénégal.

Étape 1 — Définir la fiche de poste de référence

L’analyse de CV ne vaut que si la fiche de poste est précise et chiffrée. Une fiche vague produit un scoring vague. Structurez-la en 4 blocs : (1) compétences techniques obligatoires (must-have), (2) compétences techniques souhaitées (nice-to-have), (3) soft skills mesurables, (4) critères administratifs (diplôme, années d’expérience minimum, mobilité géographique). Voici un exemple pour un poste de Développeur full-stack à Dakar :

Poste : Développeur full-stack senior
Localisation : Dakar Plateau, télétravail 2 jours/semaine
Salaire : 850 000 à 1 200 000 FCFA brut/mois selon expérience

Compétences techniques OBLIGATOIRES (poids 40%) :
- Node.js + TypeScript (3 ans minimum)
- React ou Vue.js (3 ans minimum)
- PostgreSQL ou MySQL
- Git + GitHub/GitLab CI

Compétences SOUHAITÉES (poids 25%) :
- Docker, Kubernetes
- AWS ou OVH Cloud
- Rust ou Go (bonus)
- Tests automatisés (Jest, Cypress)

Soft skills (poids 20%) :
- Capacité à présenter à un client non-technique
- Anglais B2 minimum (lecture documentation)
- Travail en équipe agile (Scrum)

Critères administratifs (poids 15%) :
- Bac+3 minimum en informatique
- 4 ans d'expérience professionnelle minimum
- Disponibilité sous 60 jours

Étape 2 — Cadrer le projet avec les RH et la direction

Avant tout déploiement, validez le périmètre IA avec votre DRH et votre direction juridique. Au Sénégal, la Loi 91-33 du Code du Travail interdit la discrimination à l’embauche fondée sur le sexe, l’âge, l’ethnie, la religion. La Loi 2008-12 et la Commission de Protection des Données Personnelles (CDP) imposent une déclaration préalable pour tout traitement automatisé de données personnelles. Préparez un document d’analyse d’impact (DPIA simplifié) et faites-le signer. Mentionnez à chaque candidat dans l’annonce : Votre candidature peut faire l’objet d’une pré-analyse par intelligence artificielle. Toute décision finale est prise par un recruteur humain.

Étape 3 — Anonymiser les CV en masse

L’anonymisation est la pierre angulaire de l’anti-biais. Avant tout envoi à Claude, retirez : nom, prénom, photo, date de naissance, adresse précise (gardez juste la ville), nationalité, statut marital, photo, mention de service militaire ou religieux. Utilisez un script Python avec pdfplumber et une regex pour supprimer ces informations.

import re, pdfplumber, json
from pathlib import Path

def extraire_texte(pdf_path):
    with pdfplumber.open(pdf_path) as pdf:
        return "\n".join(p.extract_text() or "" for p in pdf.pages)

def anonymiser(texte):
    # Email
    texte = re.sub(r"[\w\.-]+@[\w\.-]+", "[EMAIL]", texte)
    # Téléphone Sénégal
    texte = re.sub(r"(\+221|00221)?[\s\-]?[37]\d{1}[\s\-]?\d{3}[\s\-]?\d{2}[\s\-]?\d{2}", "[TEL]", texte)
    # Date de naissance
    texte = re.sub(r"\b\d{1,2}[/\-\.]\d{1,2}[/\-\.](19|20)\d{2}\b", "[DATE_NAIS]", texte)
    # Mots clés à neutraliser (à étendre)
    for mot in ["marié", "mariée", "célibataire", "divorcé", "enfants",
                "musulman", "chrétien", "catholique", "protestant"]:
        texte = re.sub(rf"\b{mot}\b", "[STATUT]", texte, flags=re.IGNORECASE)
    return texte

dossier = Path("cv_recus/")
for pdf in dossier.glob("*.pdf"):
    txt = anonymiser(extraire_texte(pdf))
    Path(f"cv_anonymises/{pdf.stem}.txt").write_text(txt, encoding="utf-8")

Étape 4 — Conserver une table de correspondance hors ligne

Le candidat anonymisé doit rester traçable pour pouvoir le contacter en cas de présélection. Stockez la table de correspondance dans un fichier chiffré (par exemple un .xlsx avec mot de passe Excel ou mieux dans un coffre-fort comme Bitwarden). Ne stockez jamais cette table sur le même drive que les CV anonymisés.

code_candidat,nom_complet,email,telephone,date_reception
CAND_001,Aïssatou Ndiaye,a.ndiaye@gmail.com,+221 77 123 45 67,2026-04-15
CAND_002,Pape Mamadou Diop,papediop@yahoo.fr,+221 78 987 65 43,2026-04-15
CAND_003,Fatou Sow,fsow.dev@protonmail.com,+221 76 555 22 11,2026-04-16
CAND_004,Cheikh Sarr,csarr@hotmail.com,+221 70 333 44 22,2026-04-16

Étape 5 — Rédiger le prompt système de scoring

Le prompt système définit le rôle, les règles d’évaluation et les contraintes anti-biais. Il doit être validé par DRH et juridique avant production.

Tu es expert en évaluation de CV pour le marché de l'emploi sénégalais.
Tu évalues UNIQUEMENT les compétences professionnelles et formations
en lien avec la fiche de poste fournie.

Règles strictes anti-biais :
- N'évalue JAMAIS sur le nom, l'origine supposée, l'âge déduit
- N'évalue JAMAIS sur le statut marital, la religion, la situation familiale
- Si une information de ce type apparaît malgré l'anonymisation,
  signale-le et exclus-la du scoring
- N'utilise JAMAIS d'expression genrée non neutre

Règles de scoring :
- Note chaque critère sur 5 (0 = absent, 5 = excellent)
- Justifie chaque note en une phrase factuelle citant le CV
- Donne un score global pondéré sur 100
- Liste 3 points forts et 3 points faibles
- Recommande : à entretenir / en réserve / à écarter
- Pour "à écarter", justifie en 2 raisons objectives

Format de sortie : JSON strict, pas de texte hors JSON.

Étape 6 — Construire le prompt utilisateur

Le prompt utilisateur combine la fiche de poste, le CV anonymisé et le format JSON de sortie. La structure JSON garantit que vous pourrez parser automatiquement les résultats vers votre ATS.

FICHE DE POSTE :
[coller le contenu de l'étape 1]

CV CANDIDAT (anonymisé, code CAND_001) :
[coller le texte du CV anonymisé]

Évalue selon le format JSON suivant :

{
  "code_candidat": "CAND_001",
  "scores": {
    "tech_obligatoires": {"note": 0, "poids": 40, "justification": ""},
    "tech_souhaitees":   {"note": 0, "poids": 25, "justification": ""},
    "soft_skills":       {"note": 0, "poids": 20, "justification": ""},
    "administratifs":    {"note": 0, "poids": 15, "justification": ""}
  },
  "score_global_sur_100": 0,
  "points_forts": ["", "", ""],
  "points_faibles": ["", "", ""],
  "recommandation": "à entretenir | en réserve | à écarter",
  "raisons_si_ecarter": ["", ""],
  "donnees_biaisees_detectees": []
}

Étape 7 — Tester sur un échantillon de 10 CV

Avant tout traitement de masse, validez la qualité sur 10 CV représentatifs (3 excellents, 4 moyens, 3 hors-cible que vous connaissez). Comparez le scoring de Claude à votre évaluation manuelle. Acceptez un écart de +/- 10 points sur 100. Si l’écart est plus important, durcissez le prompt système avec des exemples few-shot. Tracez les résultats :

Code      Score humain   Score Claude   Écart   Recommandation Claude
CAND_001  85             82             -3      à entretenir ✓
CAND_002  72             78             +6      à entretenir ✓
CAND_003  45             48             +3      en réserve ✓
CAND_004  30             22             -8      à écarter ✓
CAND_005  90             88             -2      à entretenir ✓
CAND_006  65             70             +5      en réserve ✓
CAND_007  25             20             -5      à écarter ✓
CAND_008  55             72             +17     en réserve ✗ -> à creuser
CAND_009  78             80             +2      à entretenir ✓
CAND_010  40             35             -5      à écarter ✓

Étape 8 — Activer la Batch API pour traiter 100+ CV

Pour des volumes importants (50 à 500 CV), la Batch API d’Anthropic divise le coût par 2 et permet de soumettre tous les CV en une fois avec un retour sous 24h. Voici l’extrait Python clé :

from anthropic import Anthropic
from anthropic.types.messages import MessageBatchParams

client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
requests_batch = []

for cv_file in Path("cv_anonymises/").glob("*.txt"):
    code = cv_file.stem
    cv_texte = cv_file.read_text(encoding="utf-8")
    requests_batch.append({
        "custom_id": code,
        "params": {
            "model": "claude-sonnet-4-5",
            "max_tokens": 1000,
            "system": Path("prompt_systeme.txt").read_text(),
            "messages": [{"role": "user", "content": construire_prompt_user(cv_texte, code)}]
        }
    })

batch = client.messages.batches.create(requests=requests_batch)
print(f"Batch créé : {batch.id}, statut : {batch.processing_status}")
print(f"Récupère les résultats avec : client.messages.batches.results(batch.id)")

Étape 9 — Parser les résultats et alimenter l’ATS

Une fois le batch terminé, parsez les réponses JSON et injectez-les dans votre ATS (Recruitee, Workable, Smartrecruiters) ou simplement dans un Google Sheets pour les petites équipes. Voici le code de récupération :

import json, csv

resultats = client.messages.batches.results(batch.id)

with open("scoring_resultats.csv", "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["code", "score_global", "tech_oblig", "tech_souh",
                     "soft", "admin", "reco", "biais_detectes"])
    for resultat in resultats:
        if resultat.result.type != "succeeded":
            continue
        try:
            data = json.loads(resultat.result.message.content[0].text)
        except json.JSONDecodeError:
            continue
        writer.writerow([
            data["code_candidat"],
            data["score_global_sur_100"],
            data["scores"]["tech_obligatoires"]["note"],
            data["scores"]["tech_souhaitees"]["note"],
            data["scores"]["soft_skills"]["note"],
            data["scores"]["administratifs"]["note"],
            data["recommandation"],
            "; ".join(data.get("donnees_biaisees_detectees", []))
        ])

Étape 10 — Audit anti-biais sur les résultats agrégés

Après chaque campagne, vérifiez la non-discrimination en croisant les recommandations avec les variables sensibles (que vous avez stockées dans la table de correspondance hors ligne). Si la proportion de candidatures écartées varie de plus de 20% entre les genres ou les tranches d’âge, alertez le DRH et investiguez le prompt.

Variable      Total CV   À entretenir   En réserve   À écarter   Taux écart
Femmes        58         12 (21%)       18 (31%)     28 (48%)    -
Hommes        67         15 (22%)       21 (31%)     31 (47%)    OK
< 30 ans      45         8 (18%)        14 (31%)     23 (51%)    OK
30-40 ans     52         12 (23%)       17 (33%)     23 (44%)    OK
> 40 ans      28         7 (25%)        8 (29%)      13 (46%)    OK
Si écart > 20% sur une variable -> revue manuelle complète
et ajustement du prompt

Étape 11 — Mettre en place le double regard humain

Le scoring IA n’est qu’une aide à la décision. Pour les candidats notés entre 50 et 75 (zone grise), un recruteur humain doit relire systématiquement. Pour les notés > 75, validez en 5 minutes. Pour les < 50, un sondage rapide sur 10% des écartés permet de détecter les faux négatifs (CV mal lus à cause d’un OCR défaillant).

Étape 12 — Calcul du ROI de l’automatisation

Pour une PME sénégalaise recrutant 30 postes par an avec 50 CV par poste, voici l’économie type :

Sans IA :
- Tri manuel : 4 min/CV x 50 CV x 30 postes = 6 000 min = 100h
- Coût RH 600 000 FCFA/mois soit ~3 750 FCFA/h
- Coût annuel tri = 375 000 FCFA + démotivation équipe

Avec Claude IA + Batch API :
- Coût API : ~5 FCFA par CV x 1 500 CV = 7 500 FCFA/an
- Temps de validation humaine : 30 min/poste x 30 = 15h
- Coût validation : 56 250 FCFA/an
- Setup initial : 5h x 1 mois = 18 750 FCFA amortis
- TOTAL annuel = ~82 500 FCFA

Économie nette annuelle : ~292 500 FCFA + temps RH libéré
ROI de l'investissement initial : < 1 mois

Étape 13 — Intégration directe avec un ATS open source

Si vous utilisez OpenCATS (gratuit, auto-hébergeable) ou KKiapay HR (solution sénégalaise), connectez le scoring directement via API REST. Pour KKiapay HR, l’endpoint /candidates/{id}/score accepte un POST JSON. Pour OpenCATS, utilisez l’API addon. Voici le wrapper minimal :

def pousser_score_ats(code_candidat, score_data):
    url = "https://votre-ats.entreprise.sn/api/v1/candidates/{}/score".format(code_candidat)
    headers = {
        "Authorization": "Bearer {}".format(os.getenv("ATS_TOKEN")),
        "Content-Type": "application/json"
    }
    payload = {
        "global_score": score_data["score_global_sur_100"],
        "ai_recommendation": score_data["recommandation"],
        "ai_strengths": score_data["points_forts"],
        "ai_weaknesses": score_data["points_faibles"],
        "scored_by": "claude-sonnet-4-5",
        "scored_at": datetime.now().isoformat()
    }
    r = requests.post(url, json=payload, headers=headers, timeout=15)
    r.raise_for_status()

Étape 14 — Documentation et conservation légale

Conservez 3 ans après la fin du processus de recrutement (recommandation CDP) : la fiche de poste, le prompt système exact utilisé, les CV anonymisés, les scores et justifications, l’audit anti-biais, le nom du recruteur final qui a pris la décision. Cette traçabilité protège l’entreprise en cas de contestation par un candidat. Pour les candidats non retenus, supprimez les données après 24 mois maximum sauf consentement explicite à conservation pour vivier.

Erreurs classiques à éviter

  • Erreur : envoyer les CV sans anonymisation. Conséquence : risque de biais algorithmique amplifié, et violation potentielle de la Loi 2008-12 si Claude entraîne sur les données.
  • Erreur : laisser l’IA prendre la décision finale d’écartement. Conséquence : violation de l’article 22 du RGPD européen (utile si vous travaillez avec l’UE) et du principe de non-discrimination du Code du Travail SN.
  • Erreur : ne pas tester sur un échantillon validé manuellement. Conséquence : bonnes candidatures écartées, mauvaises présélectionnées, perte de confiance des managers.
  • Erreur : utiliser Opus pour 500 CV. Conséquence : facture x5 sans gain de qualité significatif sur cette tâche structurée.
  • Erreur : oublier de mentionner l’usage de l’IA dans l’annonce. Conséquence : plainte RGPD/CDP recevable, atteinte à la marque employeur.
  • Erreur : ne pas archiver le prompt système versionné. Conséquence : impossible de reproduire ou justifier une décision 6 mois après.

Checklist Scoring CV avec Claude

✓ Fiche de poste précise et chiffrée validée
✓ Mention IA dans l'annonce de recrutement
✓ Déclaration CDP effectuée si traitement > 100 CV/an
✓ Script d'anonymisation testé (email, tel, date naiss, statut)
✓ Table de correspondance stockée chiffrée hors ligne
✓ Prompt système anti-biais validé par DRH et juridique
✓ Format JSON de sortie verrouillé
✓ Test calibration sur 10 CV référence (écart < 10 points)
✓ Batch API configurée pour les volumes > 50 CV
✓ Parsing automatique vers ATS ou Google Sheets
✓ Audit anti-biais après chaque campagne
✓ Double regard humain pour zone grise 50-75
✓ Décision finale par un recruteur humain identifié
✓ ROI mesuré et reporté trimestriellement
✓ Conservation légale 3 ans + suppression après 24 mois
Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité