RGPD
Données personnelles, durées de conservation, droit à l'oubli
Reciprok stocke des données personnelles d'organisateurs (emails, téléphones, noms) et de contacts membres. Le RGPD s'applique. Cette page décrit la politique à mettre en place.
Données personnelles concernées
| Type | Source | Localisation |
|---|---|---|
| Emails organisateurs | Création de demande | organizer.email |
| Téléphones organisateurs | Création de demande | organizer.phone |
| Noms et postes | Création de demande | organizer.contact_name, organizer.position |
| Adresses | Création de demande | organizer.address, organizer.postal_code |
| Contenu d'emails reçus | Webhook email entrant | email_message.body_*, request.raw_source |
| Transcriptions vocales | Audios uploadés | voice_message_*, request.raw_source |
| Contacts membres | Fiche membre | member.contact_name, member.email, member.phone |
Bases légales
Reciprok est utilisé en interne par l'équipe pour le traitement de demandes commerciales. Les bases légales :
- Exécution d'un contrat (ou mesures précontractuelles), pour les données des organisateurs et membres directement liées à une demande
- Intérêt légitime, pour les statistiques internes, l'historique commercial, l'amélioration du service
- Consentement, pour les communications marketing optionnelles (RefleX Reciprok, etc.)
Durée de conservation
À cadrer formellement avec le fondateur. Proposition par défaut :
| Donnée | Durée active | Archivage | Suppression |
|---|---|---|---|
| Demande gagnée | 5 ans | 5 ans après | 10 ans |
| Demande perdue | 2 ans | 1 an après | 3 ans |
| Email échangé | 5 ans | - | 5 ans |
| Audio transcrit | 1 an (audio brut), transcription conservée 5 ans | - | - |
| Données organisateur sans demande active | 1 an d'inactivité | - | 1 an après dernière demande |
| Contact membre actif | Tant que le membre est actif | - | À la désactivation |
| Logs IA / timeline | 5 ans | - | 5 ans |
Droits des personnes
À implémenter dès le MVP :
Droit d'accès
Chaque organisateur peut demander la liste de ses données. Implémentation : endpoint admin pour exporter en JSON tout ce qui concerne un email donné. Pas d'interface publique au démarrage (l'équipe traite manuellement).
Droit de rectification
Modification possible via l'équipe (toujours), ou directement par l'organisateur via lien magic (futur).
Droit à l'effacement
Sur demande, l'équipe peut supprimer un organisateur et toutes ses données associées :
async function deleteOrganizerCompletely(organizerId: string) {
// 1. Anonymiser les demandes (pas supprimer, garder l'historique commercial)
await db.update(request)
.set({
organizerId: null,
rawSource: null, // contient l'email original
})
.where(eq(request.organizerId, organizerId));
// 2. Supprimer les emails liés
await db.delete(emailMessage).where(/* threads liés à cet organizer */);
// 3. Supprimer l'organisateur
await db.delete(organizer).where(eq(organizer.id, organizerId));
// 4. Logger l'action (audit trail RGPD)
await logRgpdAction({
type: "delete_organizer",
targetId: organizerId,
actorId: currentUser.id,
timestamp: new Date(),
});
}Note importante : on anonymise les demandes plutôt que de les supprimer. La demande commerciale fait partie de l'historique de Reciprok (commissions, statistiques, comptabilité). On retire les données personnelles mais on garde l'événement.
Droit à la portabilité
Export JSON structuré des données d'un organisateur. Format ouvert (JSON), pas de tableau Excel propriétaire.
Droit d'opposition
Pour les emails marketing : opt-out clair sur chaque email, et stockage de la préférence dans organizer.marketingOptOut.
Sécurité des données
- Chiffrement en transit : TLS partout, pas d'exception (HTTPS obligatoire, SMTPS pour les emails)
- Chiffrement au repos : déléguer au provider DB (Neon, Supabase, RDS chiffrent par défaut)
- Hash des tokens : jamais stocker un token magic en clair, toujours hashé SHA-256
- Pas de mots de passe : pour les organisateurs et membres, on utilise des liens magic. Better Auth gère le hashing pour l'équipe (bcrypt/argon2)
- Logs sans données sensibles : ne jamais logger un email, un téléphone, ou le contenu d'une transcription en clair dans les logs applicatifs
- Backups chiffrés : déléguer au provider DB
Tiers et sous-traitants
Reciprok envoie des données personnelles à des tiers (sous-traitants RGPD) :
| Tiers | Données | Localisation |
|---|---|---|
| Anthropic (Claude) | Contenu des messages chat, descriptions de demandes, noms d'organisateurs | US (avec accord transfert hors UE) |
| OpenAI (Whisper, embeddings) | Audios, descriptions | US (idem) |
| Resend / Postmark (email) | Emails complets | US ou UE selon provider |
| Twilio (WhatsApp) | Messages | US ou UE |
| Cloudflare R2 / S3 | Fichiers (audios, photos) | UE de préférence |
| Neon / Supabase (DB) | Toutes les données | UE (à vérifier au setup) |
À mettre en place :
- Registre des traitements (article 30 RGPD), un document Notion ou similaire qui liste tout
- Mentions légales et politique de confidentialité sur le formulaire public
- Avertissement RGPD sur les emails de requalification ("vos informations sont stockées dans notre CRM interne...")
- Choix de providers UE quand possible (Resend a des serveurs UE, Neon a une région UE)
Contraintes techniques à respecter
Pas de tracking abusif
- Pas de cookies analytics tiers (Google Analytics, etc.) sans consentement
- Pas de pixel de tracking dans les emails sans accord
- Le tracking d'ouverture d'email reste OK car c'est de l'intérêt légitime commercial direct
Pas de partage involontaire
- Les liens magic ne doivent jamais contenir de données personnelles dans l'URL
- Les pages publiques (catalogue, requalif) ne doivent pas exposer plus que le strict nécessaire
- Les emails doivent contenir un lien d'opt-out clair (pour les communications marketing)
Audit trail
Chaque accès à des données personnelles via lien magic doit être tracé :
- Qui a accédé (token utilisé)
- Quand
- Quelle ressource
- Depuis quelle IP
Conservation des logs d'accès : 1 an.
Checklist avant la mise en prod
- Politique de confidentialité rédigée et accessible
- Mentions RGPD sur tous les formulaires publics
- Registre des traitements à jour
- Sous-traitants vérifiés (DPA signés où nécessaire)
- Procédure de droit à l'effacement testée
- Procédure de droit d'accès testée
- Backup et restoration testés
- Logs d'accès opérationnels
- Suppression automatique des audios bruts après 1 an
- Anonymisation automatique des organisateurs inactifs après 1 an