Abbiamo terminato il nostro audit GDPR. Ecco cosa abbiamo chiuso concretamente.
Qualche settimana fa abbiamo scritto che "conforme al GDPR" sulla homepage di uno strumento video significa molto meno di quanto pensiate — che il GDPR è un insieme di obblighi a carico vostro, in qualità di titolari del trattamento, che un fornitore vi aiuta a rispettare o che silenziosamente lascia sulla vostra scrivania. Il modo onesto per sostenere questa affermazione è fare il lavoro dalla nostra parte e mostrarlo, riga per riga.
E così abbiamo fatto. Abbiamo condotto un audit completo del codebase di InterMIND rispetto agli obblighi che ricadono su di noi in qualità di responsabili del trattamento, corretto ogni lacuna che aveva del codice sottostante e verificato ciascuna rispetto al prodotto in esecuzione. Questo post è il report di chiusura — non un badge, ma una checklist con le nostre risposte.
Non sosteniamo deliberatamente di essere "certificati GDPR al 100%". Il GDPR non è un certificato che si supera — e non sbandiereremo un certificato ISO che non possediamo ancora. Quello che possiamo dire: gli obblighi architetturali e di processo che un DPO analizza hanno ora risposte concrete e verificabili, ciascuna verificata rispetto al codice in esecuzione.
Cosa abbiamo chiuso
Diritto alla cancellazione (Art. 17) — la cascata viene eseguita realmente
L'eliminazione del vostro account non si limita a disattivarlo. POST /api/user/delete-account esegue una vera e propria cascata: elimina le vostre riunioni → partecipanti, messaggi, conferenze, trascrizioni; spazza via i blob di archiviazione da Tigris prima della cascata del database in modo che non rimanga nulla di orfano — allegati delle chat e file di registrazione video, in entrambe le colonne; annulla le vostre sottoscrizioni Stripe ed elimina il cliente Stripe. L'eliminazione su richiesta è disponibile anch'essa — eliminate un canale o un messaggio dall'interfaccia utente e scompaiono. Gli account anonimi (ospiti) ottengono un proprio endpoint di eliminazione più una pulizia in background ogni 6 ore, sotto un cron monitorato. L'audit ha rilevato una lacuna qui — blob di registrazione che la cascata del database eliminava ma che l'archiviazione conservava — e l'abbiamo chiusa: la cancellazione ora non lascia nulla nell'archiviazione a oggetti.
Conservazione (Art. 5(1)(e)) — un criterio documentato
L'Art. 5(1)(e) non richiede un time-to-live automatico. Richiede un criterio di conservazione definito. Il nostro è ora scritto nella Privacy Policy: i dati vengono conservati fino a quando voi o il proprietario del vostro team non li eliminate, ed eliminando l'account viene cancellato tutto. Questo è lo stesso modello su cui si basano strumenti di collaborazione come Slack e Notion — la persistenza è il comportamento previsto, e voi mantenete il controllo su di essa. Il criterio è dichiarato, non implicito.
Consenso all'analitica (Art. 6/7) — opt-out per impostazione predefinita
Un banner di consenso di Usercentrics (mostrato ai visitatori dell'UE) regola l'accesso all'analitica, e PostHog viene fornito con opt_out_capturing_by_default: true — non viene catturato nulla finché non viene dato il consenso, e non viceversa.
Portabilità dei dati (Art. 20) — un'esportazione reale
GET /api/user/export crea uno ZIP delle vostre riunioni, messaggi, registrazioni e traduzioni, con una finestra di download di 7 giorni e pulizia automatica. Accesso, cancellazione e portabilità sono strumenti che funzionano, non promesse in una policy.
Il contenuto delle riunioni va a un unico gateway AI, nell'UE — scelto dall'organizzazione
Il più grande flusso di contenuti delle riunioni — traduzione vocale e chat in tempo reale — gira sul nostro motore in Francia, mai su un LLM di terze parti. I passaggi AI che utilizzano un modello general-purpose (il digest, i riassunti dei documenti, le azioni generative dell'editor di note, Ask AI) girano sul gateway AI selezionato dall'organizzazione — Azure OpenAI nell'EU Data Zone per impostazione predefinita, Vertex AI UE o Amazon Bedrock Francoforte a scelta, ciascuno nel nostro tenant con zero conservazione dei dati e nessun addestramento sui contenuti dei clienti, oppure sull'endpoint dell'organizzazione; un unico resolver nel codice sceglie il gateway per ogni sito di chiamata, quindi non esiste un secondo percorso. Abbiamo anche rimosso i nomi dei partecipanti e il testo delle espressioni dai log del browser delle conferenze che la registrazione di sessione di PostHog avrebbe altrimenti potuto catturare. La mappa completa fornitore per fornitore si trova in Dove viene eseguita effettivamente una riunione InterMIND.
Trasparenza — sub-responsabili del trattamento e registri di trattamento, pubblicati
L'elenco dei sub-responsabili del trattamento è online, con il ruolo di ciascun fornitore e la sua sede — non "disponibile su richiesta". Dietro di esso si trova un Record of Processing Activities (ROPA) creato dallo schema live: 11 operazioni di trattamento, le misure di sicurezza per ciascuna e i percorsi di cancellazione / portabilità. La nostra Privacy Policy e i nostri Termini operano ora sotto la nostra entità legale, con la reale catena di trattamento descritta.
Runtime nell'UE — bloccato, non promesso
Tutti gli hop di runtime che una riunione attraversa si trovano nell'UE: app e API su Vercel Francoforte, il meeting server su Fly Parigi, i dati dell'applicazione in Neon Postgres (AWS Francoforte), gli errori su Sentry UE, l'analitica su PostHog UE, l'email tramite Resend Irlanda. L'archiviazione a oggetti su Tigris è ora bloccata sulle regioni UE (Francoforte + Amsterdam) — ogni nuova scrittura atterra nell'UE indipendentemente da dove si trova l'utente. L'architettura completa è sulla nostra pagina di sicurezza.