Conformité AI Act — Spiribase

Résumé exécutif

Spiribase est un système d'intelligence artificielle utilisé dans le domaine du recrutement et de la gestion des ressources humaines. À ce titre, il est classifié comme système IA à HAUT RISQUE au sens de l'AI Act européen (Règlement UE 2024/1689), Annexe III, point 4 : "Systèmes d'IA destinés à être utilisés pour le recrutement ou la sélection de personnes physiques, notamment pour diffuser des annonces d'emploi ciblées, analyser et filtrer des candidatures, et évaluer des candidats dans le cadre d'entretiens ou de tests."

Ce classement impose des obligations renforcées documentées dans ce fichier.


Contexte réglementaire

  • AI Act Annexe III, point 4 — Classement haut risque : recrutement et sélection RH
  • AI Act Art. 9 — Système de gestion des risques
  • AI Act Art. 10 — Gouvernance des données
  • AI Act Art. 13 — Transparence et information des utilisateurs
  • AI Act Art. 14 — Supervision humaine
  • AI Act Art. 15 — Robustesse, exactitude et cybersécurité
  • AI Act Art. 16-27 — Obligations des fournisseurs de systèmes à haut risque

Calendrier d'application

  • Août 2024 : Entrée en vigueur du règlement
  • Février 2025 : Obligations pour systèmes IA interdits
  • Août 2025 : Obligations pour systèmes d'usage général (GPAI)
  • Août 2026 : Obligations pour systèmes à HAUT RISQUE (dont Spiribase)
  • Août 2027 : Application complète

Source : https://ai-act-service-desk.ec.europa.eu/en/ai-act/timeline/timeline-implementation-eu-ai-act

Références légales


US-156 — Classification réglementaire

Spiribase = Système IA à HAUT RISQUE

Base légale : AI Act Annexe III, point 4 — Emploi, gestion de travailleurs et accès au travail indépendant.

Modules Spiribase concernés par la classification haut risque :

  • Scoring de matching candidat/offre (score 0-100)
  • Parsing et analyse de CV
  • Génération de rapports d'adéquation
  • Détection de biais algorithmiques
  • Suggestions proactives d'opportunités

Obligations associées :

  1. Système de gestion des risques documenté (Art. 9) — voir ai-governance.md
  2. Gouvernance des données d'entraînement et d'utilisation (Art. 10)
  3. Documentation technique complète (Art. 11)
  4. Conservation des logs (Art. 12)
  5. Transparence envers les utilisateurs (Art. 13)
  6. Supervision humaine effective (Art. 14)
  7. Exactitude et robustesse (Art. 15)
  8. Enregistrement auprès de l'autorité de surveillance (Art. 51) — à partir d'août 2026

US-158 — Blocage décisions 100% automatiques

Exigence réglementaire

AI Act Art. 14 : les systèmes IA à haut risque doivent permettre à des personnes physiques de superviser efficacement leur fonctionnement. Aucune décision impactant un candidat ne peut être prise sans intervention humaine.

Mise en œuvre dans Spiribase (observée dans le code)

  • Le score de matching est affiché comme "indicatif" dans l'interface
  • La recommandation IA (STRONGLY_RECOMMENDED, RECOMMENDED, TO_CONSIDER, NOT_RECOMMENDED, REJECTED) est présentée comme aide à la décision
  • Le champ isEliminated dans MatchingExpressReportSchema est une recommandation IA, pas une action automatique
  • HumanValidationPanel (US-070) permet la validation ou correction explicite

GAP identifié

Aucun blocage technique n'empêche actuellement un recruteur d'agir uniquement sur la base du score IA sans enregistrement de validation. La supervision est fonctionnelle mais non contrainte techniquement.

Action requise

Implémenter un workflow obligatoire : avant tout changement de statut d'une candidature, le recruteur doit confirmer avoir pris connaissance de l'analyse IA et exercer son jugement propre.


US-159 — Validation humaine des recommandations IA

Mise en œuvre dans Spiribase (observée dans le code)

  • HumanValidationPanel implémenté (Sprint 6, US-070) : permet au recruteur de valider ou corriger les recommandations IA avec motif
  • Statut "à valider" disponible dans le pipeline de candidatures
  • Les corrections sont enregistrables avec motif

GAP identifié

Les statistiques de corrections (taux de désaccord recruteur/IA) ne sont pas encore consolidées dans un dashboard. Les motifs de correction existent en base mais ne font pas l'objet de rapports périodiques.


US-160 — Explication des scores IA

Mise en œuvre dans Spiribase (observée dans le code)

Le schéma MatchingExpressReportSchema dans src/features/analyzis/lib/express-matching-report.ts inclut :

  • scoreBreakdown avec sous-scores : technicalSkills, methodology, experience, specificRequirements, cultureFit, education
  • Chaque sous-score a un champ reason obligatoire (justification textuelle)
  • strengths et weaknesses listés
  • detailedJustification global
  • riskFactor et rewardFactor avec scénarios

Ces données sont produites par l'IA et présentées au recruteur via le rapport de matching.

GAP identifié

L'historique des versions de modèle ayant produit chaque score n'est pas conservé. Il n'est pas possible de reproduire ou d'auditer a posteriori le raisonnement d'un score ancien.


US-161 — Notice d'utilisation IA

Version 1.0.0 — 2026-03-23

Ce que fait l'IA Spiribase

  • Parsing CV : extrait et structure les informations d'un CV en texte brut en un objet JSON exploitable. L'IA ne juge pas le candidat, elle structure les données.
  • Matching candidat/offre : calcule un score de compatibilité (0-100) basé sur les compétences, l'expérience, la localisation et les exigences du poste. Ce score est indicatif.
  • Rapport de matching : génère un rapport textuel expliquant les points forts, les points faibles et les risques associés au profil. C'est une aide à la décision, pas une décision.
  • Génération de contenu RH : aide à la rédaction (offres d'emploi, scripts d'entretien, tests techniques). Le contenu généré doit être relu et validé.

Ce que l'IA Spiribase ne fait PAS

  • Elle ne décide pas de l'embauche ou du rejet d'un candidat
  • Elle ne traite pas de données sensibles au sens RGPD (santé, origine, religion, etc.)
  • Elle n'effectue pas de surveillance comportementale
  • Elle ne garantit pas l'absence de biais algorithmiques

Limites connues

  • Les modèles LLM peuvent produire des informations incorrectes (hallucinations)
  • Les scores de matching sont influencés par la formulation des offres et des CV
  • Les biais présents dans les données d'entraînement des LLMs peuvent se refléter dans les analyses
  • Les données des candidats sont transmises à des fournisseurs tiers (OpenAI, Anthropic, Google) — voir data-protection.md

US-176 — Documentation des modèles IA

Modèles utilisés (audit src/lib/ai/models.ts)

OpenAI (fournisseur prioritaire)

  • Modèles configurés : GPT-4o, GPT-4.1, GPT-4.1-mini, GPT-5 (et variantes)
  • Usage : parsing CV, matching, génération contenu
  • Données traitées : texte CV, descriptions offres, données profil candidat

Anthropic (fallback 1)

  • Modèles configurés : Claude 3 Haiku, Claude Sonnet 4, Claude Opus 4
  • Usage : même périmètre qu'OpenAI en cas d'échec ou quota dépassé
  • Données traitées : identiques

Google Gemini (fallback 2)

  • Modèles configurés : Gemini 1.5-flash, Gemini 1.5-pro, Gemini 2.0-flash
  • Usage : même périmètre en dernier recours
  • Données traitées : identiques

Architecture de sélection

Cascade automatique via createAIClient() dans src/lib/ai/client.ts :

  1. Tentative OpenAI avec rotation de clés
  2. Si échec (authentification ou quota) → Anthropic
  3. Si échec → Gemini
  4. Si tous échouent → erreur levée

GAP identifié

La version de modèle effectivement utilisée pour chaque appel LLM n'est pas loguée en base. Il est impossible de déterminer a posteriori quel modèle a produit un score ou une recommandation spécifique.


US-177 — Documentation des données IA

Sources de données utilisées

SourceTypeContenuBiais potentiels
CV candidatsDonnées fournies par le candidatExpériences, compétences, formation, coordonnéesFormulation variable, biais de rédaction
Offres d'emploiDonnées saisies par le recruteurTitre, description, exigencesBiais de genre dans la rédaction, exigences surestimées
Données de scoringGénérées par l'IAScores, rapports, recommandationsBiais des modèles d'entraînement LLM
Historique de recrutementBase SpiribaseApplications, statuts, décisionsBiais de sélection historique

Biais analysés

  • Biais de genre : détection via module DEI (src/features/dei/server/routers.ts)
  • Biais de séniorité : les paramètres RecruiterMood (SOUPLE/MOYEN/SEVERE) influencent la sévérité du scoring
  • Biais géographique : la localisation est incluse dans le scoring — peut désavantager candidats distants

US-178 — Tests biais IA

Plan de tests (à implémenter)

  1. Tests de parité de genre : soumettre des CV identiques avec prénoms masculins/féminins, comparer les scores
  2. Tests de parité d'origine : comparer scores pour noms à consonance différente
  3. Tests de séniorité : vérifier que les écarts de score sont justifiés par les compétences et non l'âge
  4. Tests de localisation : mesurer l'impact du critère géographique sur le score global

Fréquence recommandée : trimestrielle

Alertes de dérive

Mettre en place une alerte si le score moyen d'un groupe démographique s'écarte de plus de 10 points du score moyen global.


US-194 — Blocage usages interdits IA

Usages bloqués ou à bloquer

Usage interditStatutMesure
Décision automatique d'embauchePartiellement bloqué (UI)Implémenter validation obligatoire en base
Traitement données biométriquesNon applicable (non implémenté)Maintenir exclusion
Inférence données sensiblesGAP — les modèles LLM peuvent inférerPseudonymiser avant envoi LLM
Surveillance comportementaleNon applicableMaintenir exclusion

US-195 — Avertissements écrans IA

Bandeaux informatifs à afficher (recommandation)

  • Sur tout écran affichant un score IA : "Ce score est une aide à la décision. La décision finale appartient au recruteur."
  • Sur le rapport de matching : "Rapport généré par IA — validez avec votre jugement professionnel."
  • Sur le parsing CV : "Les données extraites par IA peuvent contenir des erreurs. Vérifiez avant enregistrement."

Messages administrables

Les textes des avertissements devraient être configurables par l'organisation via les paramètres admin pour permettre l'adaptation au contexte client.


Responsables


Historique des versions

VersionDateAuteurModifications
1.0.02026-03-23K. Msaoubi / N. LaroussiCréation initiale Sprint 9