Conformité RGPD — Spiribase
Résumé exécutif
Ce document présente la conformité de Spiribase au Règlement Général sur la Protection des Données (RGPD, UE 2016/679). Spiribase agit en qualité de sous-traitant pour ses clients (recruteurs et organisations), ces derniers étant les responsables de traitement des données candidates.
Contexte réglementaire
- RGPD Art. 4 — Définitions : responsable de traitement, sous-traitant, données personnelles
- RGPD Art. 5 — Principes de traitement (licéité, minimisation, exactitude, limitation de conservation)
- RGPD Art. 6 — Licéité du traitement (bases légales)
- RGPD Art. 9 — Traitement de catégories particulières de données
- RGPD Art. 13-14 — Transparence et information
- RGPD Art. 15-22 — Droits des personnes
- RGPD Art. 25 — Protection des données dès la conception
- RGPD Art. 28 — Contrats de sous-traitance
- RGPD Art. 30 — Registre des activités de traitement
- RGPD Art. 35 — Analyse d'impact (DPIA)
Références légales
- RGPD : https://eur-lex.europa.eu/eli/reg/2016/679/oj/eng
- Guide CNIL Recrutement : https://www.cnil.fr/fr/le-guide-du-recrutement
US-164 — Cartographie des traitements de données
| Traitement | Finalité | Base légale | Données concernées | Durée conservation | Sous-traitants |
|---|---|---|---|---|---|
| Gestion des candidats | Recrutement | Consentement (Art. 6.1.a) ou intérêt légitime (Art. 6.1.f) | Nom, prénom, email, téléphone, adresse, CV, expériences, compétences | 2 ans après dernier contact | OpenAI, Anthropic, Google (IA), Neon (BDD), Vercel (hébergement) |
| Analyse IA de CV | Structuration et évaluation | Consentement ou intérêt légitime | Texte CV complet (PII incluses) | Durée de la session + logs | OpenAI / Anthropic / Google |
| Matching IA | Évaluation adéquation poste | Consentement ou intérêt légitime | Profil candidat (nom, email inclus — GAP) | Durée de l'offre | OpenAI / Anthropic / Google |
| Gestion des candidatures | Suivi pipeline recrutement | Contrat (Art. 6.1.b) ou consentement | Statut, commentaires, décisions | Durée du processus + 1 an | Neon (BDD) |
| Notifications candidat | Communication | Consentement | Email, prénom | Durée de la relation | Twilio (SMS), SMTP |
| Portail candidat | Auto-service RGPD | Consentement | Email, OTP, données profil | Session active | Neon (BDD) |
| Analytics recrutement | Pilotage RH | Intérêt légitime | Données agrégées anonymisées | 3 ans | Neon (BDD) |
US-165 — Gestion des bases légales
Base légale par traitement
| Traitement | Base légale RGPD | Justification |
|---|---|---|
| Collecte CV et profil | Art. 6.1.a — Consentement | Le candidat consent lors du dépôt de candidature |
| Analyse IA du CV | Art. 6.1.f — Intérêt légitime | Amélioration de la mise en relation candidat/offre |
| Scoring matching | Art. 6.1.f — Intérêt légitime | Aide à la décision de recrutement |
| Conservation candidature | Art. 6.1.b — Contrat | Exécution du contrat de recrutement |
| Analytics anonymisés | Art. 6.1.f — Intérêt légitime | Pilotage de la performance recrutement |
GAP identifié
Les transferts de données vers les LLMs tiers (OpenAI, Anthropic, Google) constituent des sous-traitances qui nécessitent des DPA signés et des clauses contractuelles types (SCCs) pour les transferts hors UE. Ces DPA ne sont pas encore tous formalisés.
US-166 — Minimisation des données
Audit des champs collectés
| Champ | Nécessaire | Facultatif | Statut minimisation |
|---|---|---|---|
| firstName, lastName | Oui (identification) | Non | OK |
| Oui (communication) | Non | OK — chiffré AES-256 | |
| phoneNumber | Facultatif | Oui | OK — chiffré, non obligatoire |
| address | Facultatif | Oui | OK — chiffré, non obligatoire |
| cityAndCountry | Utile matching | Oui | Acceptable — utilisé pour critère localisation |
| githubLink, linkedinLink | Facultatif | Oui | OK — non obligatoire |
| qualificationResume | Utile IA | Non | OK — utilisé pour analyse |
| CV text / parsing | Nécessaire pour IA | Non | GAP — transmis aux LLMs sans pseudonymisation |
GAP critique
Les champs firstName, lastName et email sont inclus dans le texte envoyé aux LLMs alors que seules les compétences, expériences et formations sont nécessaires pour le scoring. Ces champs doivent être pseudonymisés avant envoi aux APIs LLM.
US-167 — Gestion des droits RGPD
Droits disponibles
| Droit | Implémentation | Fichier | Statut |
|---|---|---|---|
| Droit d'accès (Art. 15) | Export données candidat | src/features/candidates/ | Partiel |
| Droit de rectification (Art. 16) | Modification profil candidat | Interface recruteur | Actif |
| Droit à l'effacement (Art. 17) | Anonymisation + suppression planifiée | src/features/rgpd/server/routers.ts | Actif |
| Droit à la limitation (Art. 18) | Non implémenté | — | GAP |
| Droit à la portabilité (Art. 20) | Export JSON candidat | US-168 | Partiel |
| Droit d'opposition (Art. 21) | Via opt-out SMS (smsOptIn) | smsOptIn sur Candidate | Partiel |
US-168 — Export données candidat
Mise en œuvre dans Spiribase
- Route d'export disponible pour les données structurées du candidat
- Le portail candidat (
src/app/candidate-portal/) permet au candidat d'accéder à ses données
GAP identifié
L'export ne couvre pas nécessairement toutes les données traitées par l'IA (scores, rapports de matching générés). Un export complet "Article 20 RGPD" doit inclure toutes les données traitées.
US-169 — Suppression des données
Mise en œuvre dans Spiribase (confirmée par audit)
Fichier : src/features/rgpd/server/routers.ts
Le workflow de suppression :
requestDeletion: planifie la suppression avec délai de grâce configurable (1-365 jours) — champdeletionScheduledAtsurCandidatecancelDeletion: annule la planificationanonymizeCandidate: remplace firstName→"Anonymisé", lastName→"", email→anonymized-{id}@deleted.local, phoneNumber→null, address→null, qualificationResume→"[Données supprimées]"- Route publique
/api/public/rgpd/anonymizepour appel externe
GAP identifié
- L'anonymisation ne couvre pas
githubLink,linkedinLink,personnalWebsiteLink,cityAndCountry,languages - La suppression n'est pas propagée aux fournisseurs LLM (OpenAI, Anthropic, Google ne peuvent pas supprimer des données déjà traitées)
- Pas de mécanisme de notification aux sous-traitants lors d'une suppression
US-170 — Durée de conservation des CV
Réglementation CNIL
Selon les recommandations CNIL pour le recrutement :
- Candidatures non retenues : 2 ans maximum après le dernier contact
- CV spontanés : 2 ans maximum
- Dossiers recrutement : durée du contrat + 5 ans (si embauché)
Mise en œuvre dans Spiribase
- Champs
deletionScheduledAtdisponibles sur le modèleCandidate - Purge manuelle via
requestDeletiondans le panel RGPD - GAP : Aucune purge automatique configurée par défaut. La durée de conservation n'est pas appliquée automatiquement après 2 ans.
Action requise
Implémenter un job Inngest de purge automatique qui planifie deletionScheduledAt à 2 ans pour toutes les candidatures inactives.
US-171 — AIPD / DPIA
Obligation RGPD
Une DPIA (Data Protection Impact Assessment) est obligatoire pour tout traitement susceptible d'engendrer un risque élevé pour les droits et libertés (Art. 35 RGPD). Le scoring IA de candidats remplit ce critère.
État actuel
- DPIA non formalisée à ce jour (Sprint 9)
- Les éléments nécessaires à la DPIA sont documentés dans les fichiers du présent pack
Modèle DPIA à compléter
- Description du traitement : voir cartographie US-164
- Nécessité et proportionnalité : scoring IA comme aide à la décision (non décisionnaire)
- Risques identifiés : biais algorithmiques, transferts hors UE, données non pseudonymisées
- Mesures d'atténuation : supervision humaine, pseudonymisation (à implémenter), DPA fournisseurs
- Résiduel : à évaluer après mise en place des mesures
- Consultation CNIL : si risque résiduel élevé persistant
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 |