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


US-164 — Cartographie des traitements de données

TraitementFinalitéBase légaleDonnées concernéesDurée conservationSous-traitants
Gestion des candidatsRecrutementConsentement (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étences2 ans après dernier contactOpenAI, Anthropic, Google (IA), Neon (BDD), Vercel (hébergement)
Analyse IA de CVStructuration et évaluationConsentement ou intérêt légitimeTexte CV complet (PII incluses)Durée de la session + logsOpenAI / Anthropic / Google
Matching IAÉvaluation adéquation posteConsentement ou intérêt légitimeProfil candidat (nom, email inclus — GAP)Durée de l'offreOpenAI / Anthropic / Google
Gestion des candidaturesSuivi pipeline recrutementContrat (Art. 6.1.b) ou consentementStatut, commentaires, décisionsDurée du processus + 1 anNeon (BDD)
Notifications candidatCommunicationConsentementEmail, prénomDurée de la relationTwilio (SMS), SMTP
Portail candidatAuto-service RGPDConsentementEmail, OTP, données profilSession activeNeon (BDD)
Analytics recrutementPilotage RHIntérêt légitimeDonnées agrégées anonymisées3 ansNeon (BDD)

US-165 — Gestion des bases légales

Base légale par traitement

TraitementBase légale RGPDJustification
Collecte CV et profilArt. 6.1.a — ConsentementLe candidat consent lors du dépôt de candidature
Analyse IA du CVArt. 6.1.f — Intérêt légitimeAmélioration de la mise en relation candidat/offre
Scoring matchingArt. 6.1.f — Intérêt légitimeAide à la décision de recrutement
Conservation candidatureArt. 6.1.b — ContratExécution du contrat de recrutement
Analytics anonymisésArt. 6.1.f — Intérêt légitimePilotage 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

ChampNécessaireFacultatifStatut minimisation
firstName, lastNameOui (identification)NonOK
emailOui (communication)NonOK — chiffré AES-256
phoneNumberFacultatifOuiOK — chiffré, non obligatoire
addressFacultatifOuiOK — chiffré, non obligatoire
cityAndCountryUtile matchingOuiAcceptable — utilisé pour critère localisation
githubLink, linkedinLinkFacultatifOuiOK — non obligatoire
qualificationResumeUtile IANonOK — utilisé pour analyse
CV text / parsingNécessaire pour IANonGAP — 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

DroitImplémentationFichierStatut
Droit d'accès (Art. 15)Export données candidatsrc/features/candidates/Partiel
Droit de rectification (Art. 16)Modification profil candidatInterface recruteurActif
Droit à l'effacement (Art. 17)Anonymisation + suppression planifiéesrc/features/rgpd/server/routers.tsActif
Droit à la limitation (Art. 18)Non implémentéGAP
Droit à la portabilité (Art. 20)Export JSON candidatUS-168Partiel
Droit d'opposition (Art. 21)Via opt-out SMS (smsOptIn)smsOptIn sur CandidatePartiel

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 :

  1. requestDeletion : planifie la suppression avec délai de grâce configurable (1-365 jours) — champ deletionScheduledAt sur Candidate
  2. cancelDeletion : annule la planification
  3. anonymizeCandidate : remplace firstName→"Anonymisé", lastName→"", email→anonymized-{id}@deleted.local, phoneNumber→null, address→null, qualificationResume→"[Données supprimées]"
  4. Route publique /api/public/rgpd/anonymize pour 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 deletionScheduledAt disponibles sur le modèle Candidate
  • Purge manuelle via requestDeletion dans 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

  1. Description du traitement : voir cartographie US-164
  2. Nécessité et proportionnalité : scoring IA comme aide à la décision (non décisionnaire)
  3. Risques identifiés : biais algorithmiques, transferts hors UE, données non pseudonymisées
  4. Mesures d'atténuation : supervision humaine, pseudonymisation (à implémenter), DPA fournisseurs
  5. Résiduel : à évaluer après mise en place des mesures
  6. Consultation CNIL : si risque résiduel élevé persistant

Responsables


Historique des versions

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