IA et RH : Automatiser le Recrutement sans Perdre l Humain

IA et RH : Automatiser le Recrutement sans Perdre l Humain

Une PME de taille moyenne reçoit en moyenne 87 candidatures pour un poste qualifié. Un responsable RH qui passe 5 minutes sur chaque CV y consacre plus de 7 heures — sans garantie d’avoir identifié les meilleurs profils. Selon une étude LinkedIn de 2024, 75 % des CV reçus ne correspondent pas aux critères minimaux du poste. L’IA change radicalement cette équation, non pas pour remplacer le jugement humain dans les décisions qui comptent, mais pour concentrer ce jugement là où il crée de la valeur. Voici comment les PME françaises commencent à reconfigurer leur processus RH avec intelligence.

Le tri automatisé des CV : ce que l’IA fait vraiment

Le tri de CV par IA ne se résume pas à du matching de mots-clés — c’est justement ce que faisaient les ATS (Applicant Tracking Systems) de la génération précédente, avec les biais que cela implique (favoriser les candidats qui connaissent les mots-clés, exclure des profils atypiques mais excellents).

Les LLM apportent une compréhension sémantique. Un candidat qui écrit “j’ai piloté la transformation digitale d’une PME de 200 personnes” peut correspondre à un poste demandant “experience en gestion du changement et conduite de projets SI” — même sans aucun mot-clé commun.

Implémentation basique avec l’API Claude :

import anthropic
import json

client = anthropic.Anthropic()

def analyser_cv(cv_text: str, fiche_de_poste: str) -> dict:
    """Analyser un CV par rapport à une fiche de poste"""
    
    response = client.messages.create(
        model="claude-3-5-sonnet-20241022",
        max_tokens=1000,
        temperature=0.1,
        messages=[{
            "role": "user",
            "content": f"""
Analyse ce CV par rapport à la fiche de poste suivante.

FICHE DE POSTE :
{fiche_de_poste}

CV DU CANDIDAT :
{cv_text}

Réponds en JSON avec cette structure exacte :
{{
  "score_global": <0-100>,
  "competences_matchees": ["liste", "des", "compétences"],
  "competences_manquantes": ["liste"],
  "points_forts": ["max 3 points forts pertinents"],
  "points_attention": ["max 3 points à éclaircir"],
  "recommandation": "ENTRETIEN" | "LISTE_ATTENTE" | "REFUS",
  "justification": "2-3 phrases de justification"
}}

Important : évalue le potentiel et l'expérience transposable, 
pas uniquement les mots-clés identiques.
"""
        }]
    )
    
    return json.loads(response.content[0].text)

# Traitement en batch
def traiter_candidatures(candidatures: list, fiche_poste: str) -> list:
    resultats = []
    for candidat in candidatures:
        analyse = analyser_cv(candidat["cv"], fiche_poste)
        resultats.append({
            "nom": candidat["nom"],
            "email": candidat["email"],
            **analyse
        })
    
    # Trier par score décroissant
    return sorted(resultats, key=lambda x: x["score_global"], reverse=True)

Ce que l’IA fait bien :

  • Identifier les compétences transverses non explicitement nommées
  • Repérer les incohérences chronologiques (trous non expliqués, évolutions étranges)
  • Structurer l’information pour une revue humaine rapide
  • Appliquer des critères de façon cohérente sur 200 CV, sans fatigue

Ce que l’IA ne doit pas faire seule :

  • Prendre la décision finale de recrutement
  • Évaluer la personnalité ou la culture fit
  • Interpreting des situations de vie complexes (reconversion, interruption maladie)

Matching candidat-poste : au-delà du CV

Le matching traditionnel compare un CV à une fiche de poste. Le matching avancé compare un profil complet (compétences, expériences, aspirations, style de travail) à une culture et équipe (valeurs de l’entreprise, dynamique du manager, besoins réels du poste).

Système de scoring multi-dimensionnel :

from dataclasses import dataclass
from typing import Optional

@dataclass
class ProfilCandidat:
    competences_techniques: list[str]
    annees_experience: int
    secteurs: list[str]
    type_structure: str  # PME, grand groupe, startup
    mobilite: bool
    salaire_souhaite: Optional[int]
    motivations: list[str]

@dataclass  
class ProfilPoste:
    competences_requises: list[str]
    competences_souhaitees: list[str]
    experience_min: int
    secteur_prefere: list[str]
    culture_entreprise: str
    salaire_max: int
    evolution_possible: str

def calculer_matching(candidat: ProfilCandidat, poste: ProfilPoste) -> dict:
    """Calcul multi-dimensionnel du matching"""
    
    # Score compétences (pondération 40%)
    competences_match = len(set(candidat.competences_techniques) & 
                           set(poste.competences_requises))
    score_competences = min(100, (competences_match / len(poste.competences_requises)) * 100)
    
    # Score expérience (pondération 20%)
    if candidat.annees_experience >= poste.experience_min:
        score_experience = min(100, 70 + (candidat.annees_experience - poste.experience_min) * 5)
    else:
        score_experience = (candidat.annees_experience / poste.experience_min) * 60
    
    # Score salaire (pondération 20%) - élimination si incompatible
    if candidat.salaire_souhaite and candidat.salaire_souhaite > poste.salaire_max * 1.1:
        return {"score_global": 0, "raison_elimination": "Incompatibilité salariale"}
    score_salaire = 100 if not candidat.salaire_souhaite else                    max(0, 100 - ((candidat.salaire_souhaite - poste.salaire_max) / poste.salaire_max) * 100)
    
    score_global = (score_competences * 0.4 + score_experience * 0.2 + score_salaire * 0.2)
    
    return {
        "score_global": round(score_global),
        "details": {
            "competences": round(score_competences),
            "experience": round(score_experience),
            "salaire": round(score_salaire),
        }
    }

Détection des biais : rendre le recrutement plus équitable

L’IA peut amplifier les biais existants si elle est entraînée sur des données historiques biaisées — ou les réduire si elle est correctement paramétrée. Amazon a dû abandonner son système de tri de CV en 2018 car il pénalisait les candidates féminines (entraîné sur 10 ans de recrutements majoritairement masculins).

Protocole anti-biais pour PME :

def anonymiser_cv_pour_preselecton(cv_text: str) -> str:
    """Supprimer les informations identitaires avant le scoring initial"""
    import re
    import spacy
    
    nlp = spacy.load("fr_core_news_sm")
    doc = nlp(cv_text)
    
    anonymized = cv_text
    
    # Supprimer les entités nommées (personnes, lieux)
    for ent in reversed(doc.ents):
        if ent.label_ in ["PER", "LOC"]:
            anonymized = anonymized[:ent.start_char] + "[ANONYMISÉ]" + anonymized[ent.end_char:]
    
    # Supprimer les patterns identifiants
    patterns_a_supprimer = [
        r'd{2}/d{2}/d{4}',  # Dates de naissance potentielles
        r'+33s?d[sd]{8,}',  # Numéros de téléphone
        r'[w.+-]+@[w-]+.[a-zA-Z]{2,}',  # Emails
        r'(?i)(nationalité|né[e]?s+le|marié[e]?|célibataire)',
    ]
    
    for pattern in patterns_a_supprimer:
        anonymized = re.sub(pattern, '[SUPPRIMÉ]', anonymized)
    
    return anonymized

# Audit régulier des biais dans les décisions
def auditer_decisions(decisions: list[dict]) -> dict:
    """Analyser la répartition des décisions pour détecter des biais potentiels"""
    total = len(decisions)
    entretiens = [d for d in decisions if d["recommandation"] == "ENTRETIEN"]
    
    return {
        "taux_selection_global": len(entretiens) / total,
        # Ajouter ici les analyses par groupe démographique
        # si ces données sont collectées avec consentement
    }

Règles de bonne pratique :

  • Tester votre système sur des CV fictifs identiques sauf le prénom (Mohamed vs Pierre)
  • Valider les décisions finales par un humain, toujours
  • Documenter la logique de scoring (requis par l’AI Act pour les systèmes RH à risque élevé)
  • Former vos RH à identifier les biais résiduels

Automatiser l’onboarding : les 30 premiers jours

L’onboarding est souvent le parent pauvre du recrutement — pourtant, 20 % des turnover ont lieu dans les 45 premiers jours, selon Workelo. L’IA peut y jouer un rôle significatif.

Chatbot d’onboarding personnalisé :

# Configuration d'un assistant onboarding
ONBOARDING_SYSTEM_PROMPT = """
Tu es l'assistant onboarding de [Entreprise]. Tu aides les nouveaux 
employés à s'intégrer dans les premières semaines.

Tu peux répondre aux questions sur :
- Les procédures administratives (mutuelle, tickets restaurant, etc.)
- L'organisation de l'entreprise et les personnes à contacter
- Les outils et accès informatiques
- La culture et les valeurs de l'entreprise
- Le planning de la période d'intégration

Tu ne peux PAS :
- Modifier des données RH (renvoyer vers RH pour tout changement)
- Communiquer des informations confidentielles d'autres employés
- Faire des promesses sur l'évolution de carrière

Employé : {prenom} {nom}, poste : {poste}, date d'arrivée : {date_arrivee}
"""

def generer_plan_onboarding(poste: str, departement: str) -> dict:
    """Générer un plan d'onboarding personnalisé selon le poste"""
    
    response = client.messages.create(
        model="claude-3-5-haiku-20241022",
        max_tokens=1500,
        messages=[{
            "role": "user",
            "content": f"""
Crée un plan d'onboarding sur 30 jours pour un nouveau {poste} 
dans le département {departement}.

Format JSON :
{{
  "semaine_1": {{"objectifs": [], "actions": [], "rencontres_cles": []}},
  "semaine_2": {{"objectifs": [], "actions": [], "rencontres_cles": []}},
  "semaine_3_4": {{"objectifs": [], "actions": [], "jalons": []}},
  "ressources_essentielles": [],
  "kpis_integration": []
}}
"""
        }]
    )
    return json.loads(response.content[0].text)

Automatisations concrètes pour l’onboarding :

  • Envoi automatique du plan d’intégration J-5 avant l’arrivée
  • Rappels automatiques des étapes clés (accès informatique, réunion équipe, bilan J+30)
  • Questionnaire de satisfaction automatisé à J+15 et J+30
  • Attribution automatique des formations obligatoires (sécurité, RGPD) dans le LMS

Outils disponibles pour les PME

Sans développement interne :

OutilUsagePrix estimé
Notion AIRédaction offres, synthèse CV10 €/mois/user
ManatalATS avec IA intégrée15 €/mois
SkeeledMatching candidats, vidéo-entretien IASur devis
WorkeloOnboarding automatiséSur devis
HireEZSourcing candidats passifsSur devis

Avec développement sur mesure :

  • API Anthropic / OpenAI pour scoring CV personnalisé (~0,01 € par CV)
  • LangChain + ChromaDB pour chatbot onboarding sur vos documents internes
  • Python + spaCy pour anonymisation et détection de biais

Le cadre éthique et légal incontournable

Ce que dit le RGPD pour le recrutement IA :

  • Les candidats doivent être informés qu’une IA analyse leur CV (article 22 RGPD)
  • Ils ont le droit de demander une révision humaine de toute décision automatisée
  • Les données de CV ne peuvent être conservées que pour la durée de la candidature (2 ans maximum)

Ce que dit l’AI Act : Les systèmes IA utilisés pour le recrutement sont classés risque élevé. Obligations dès 2026 :

  • Documentation technique du système
  • Évaluation des biais avant déploiement
  • Supervision humaine obligatoire
  • Registre des décisions automatisées

Ce que dit le droit du travail français : La CNIL a publié des recommandations spécifiques sur l’IA en RH. Tout outil d’évaluation des candidats doit être déclaré au CSE et les candidats informés de son utilisation.

La règle d’or : l’IA augmente, l’humain décide

Le risque de l’automatisation RH n’est pas de remplacer les RH — c’est de créer une illusion d’objectivité. Un algorithme de scoring n’est pas objectif : il reflète les choix (souvent inconscients) de ceux qui l’ont conçu.

La bonne utilisation de l’IA en RH : elle traite le volume, l’humain gère la décision. L’IA lit 200 CV et produit une liste de 20 profils pertinents avec des synthèses structurées. Le RH lit ces 20 profils en profondeur, fait les entretiens, et décide. Le temps gagné sur le volume est réinvesti dans la qualité des interactions humaines.

Conclusion

L’IA transforme le recrutement en PME non pas en le déshumanisant, mais en libérant du temps humain pour ce qui compte : comprendre les motivations d’un candidat, évaluer l’adéquation culturelle, construire une relation dès le processus de recrutement. Les PME qui adoptent ces outils aujourd’hui ne sont pas celles qui font de l’IA pour faire de l’IA — ce sont celles qui ont identifié où leur équipe RH passe du temps sans valeur ajoutée, et qui ont décidé de changer ça.

Vous souhaitez déployer l’IA dans votre processus de recrutement, de façon éthique et conforme ? Brio Novia accompagne les PME dans la conception de systèmes RH augmentés, du scoring de CV au chatbot onboarding. Contactez-nous à contact@brio-novia.eu pour un audit de votre processus actuel.