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
- AI Act : https://eur-lex.europa.eu/eli/reg/2024/1689/oj/eng
- CNIL IA : https://www.cnil.fr/fr/technologies/intelligence-artificielle-ia
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 :
- Système de gestion des risques documenté (Art. 9) — voir ai-governance.md
- Gouvernance des données d'entraînement et d'utilisation (Art. 10)
- Documentation technique complète (Art. 11)
- Conservation des logs (Art. 12)
- Transparence envers les utilisateurs (Art. 13)
- Supervision humaine effective (Art. 14)
- Exactitude et robustesse (Art. 15)
- 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
isEliminateddansMatchingExpressReportSchemaest 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)
HumanValidationPanelimplé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 :
scoreBreakdownavec sous-scores : technicalSkills, methodology, experience, specificRequirements, cultureFit, education- Chaque sous-score a un champ
reasonobligatoire (justification textuelle) strengthsetweaknesseslistésdetailedJustificationglobalriskFactoretrewardFactoravec 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 :
- Tentative OpenAI avec rotation de clés
- Si échec (authentification ou quota) → Anthropic
- Si échec → Gemini
- 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
| Source | Type | Contenu | Biais potentiels |
|---|---|---|---|
| CV candidats | Données fournies par le candidat | Expériences, compétences, formation, coordonnées | Formulation variable, biais de rédaction |
| Offres d'emploi | Données saisies par le recruteur | Titre, description, exigences | Biais de genre dans la rédaction, exigences surestimées |
| Données de scoring | Générées par l'IA | Scores, rapports, recommandations | Biais des modèles d'entraînement LLM |
| Historique de recrutement | Base Spiribase | Applications, statuts, décisions | Biais 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)
- Tests de parité de genre : soumettre des CV identiques avec prénoms masculins/féminins, comparer les scores
- Tests de parité d'origine : comparer scores pour noms à consonance différente
- Tests de séniorité : vérifier que les écarts de score sont justifiés par les compétences et non l'âge
- 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 interdit | Statut | Mesure |
|---|---|---|
| Décision automatique d'embauche | Partiellement bloqué (UI) | Implémenter validation obligatoire en base |
| Traitement données biométriques | Non applicable (non implémenté) | Maintenir exclusion |
| Inférence données sensibles | GAP — les modèles LLM peuvent inférer | Pseudonymiser avant envoi LLM |
| Surveillance comportementale | Non applicable | Maintenir 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
- Kamel Msaoubi — kamel@spiritek.io — Référent IA & DPO technique
- Nader Laroussi — nader@spiritek.io — Responsable conformité IA
Historique des versions
| Version | Date | Auteur | Modifications |
|---|---|---|---|
| 1.0.0 | 2026-03-23 | K. Msaoubi / N. Laroussi | Création initiale Sprint 9 |