Privacy Policy — RingVision
Ultimo aggiornamento: Settembre 2026
1. Titolare del trattamento
RingVision è sviluppato da Ridge Iyamu, con sede in Via Castelletto 11/3b, Almese (TO), Italia.
Per qualsiasi richiesta relativa alla privacy: privacy@ringvision.app
2. Dati raccolti
Raccogliamo i seguenti dati personali:
- Dati di registrazione: email, nome/nickname
- Dati del profilo atleta: età, peso, altezza, guardia (facoltativi)
- Dati di utilizzo: video caricati, combinazioni salvate, tag, sessioni di allenamento
- Video di allenamento: sono contenuti che ti ritraggono e, quando li sottoponi all'Analisi AI, danno origine a dati biometrici ai sensi dell'art. 9 GDPR (sezione 4bis)
- Diario allenamento (facoltativo): durata sessione, sensazione, RPE (1–10), stato mentale non clinico, note testuali e collegamenti opzionali a video/sessioni. Tutti i campi sono facoltativi tranne la sensazione, owner-only, mai condivisi con coach/palestra né usati per profilazione o finalità mediche.
- Peso corporeo (facoltativo, solo con consenso): registrato in una raccolta dedicata, una misura per giorno. È un dato relativo alla salute — sezione 4quater.
- Obiettivi personali (facoltativi): valori target su video/combo/peso/custom, con scadenza settimanale, mensile o trimestrale. Owner-only, mai condivisi.
- Dati di pagamento: gestiti da Apple App Store, Google Play o Stripe (piani palestra). Non accediamo ai dati della carta.
- Dati di diagnostica: crash report tramite Firebase Crashlytics
- Dati analitici: statistiche d'uso tramite Firebase Analytics, raccolte solo dopo il tuo consenso
3. Finalità del trattamento
I dati sono trattati per:
- Fornitura del servizio RingVision
- Gestione dell'account e autenticazione
- Elaborazione degli abbonamenti in-app e dei piani per le palestre
- Analisi tecnica dei tuoi video, solo con il tuo consenso esplicito (sezione 4bis)
- Miglioramento del prodotto tramite statistiche d'uso, solo con il tuo consenso (Firebase Analytics)
- Miglioramento del modello di analisi AI tramite dati di movimento conservati in forma pseudonimizzata, solo con un consenso separato e facoltativo (sezione 4ter)
- Invio di notifiche relative all'allenamento (solo se autorizzate)
4. Base giuridica (GDPR)
- Esecuzione del contratto (art. 6.1.b): per erogare il servizio
- Interesse legittimo (art. 6.1.f): per la sicurezza e la prevenzione delle frodi
- Consenso (art. 6.1.a): per le notifiche opzionali e per le statistiche d'uso
- Consenso esplicito (art. 9.2.a): per l'analisi biometrica dei video (4bis), per la conservazione dei dati di movimento a fini di miglioramento del modello (4ter) e per la registrazione del peso corporeo (4quater)
I quattro consensi sopra elencati sono distinti e indipendenti: puoi darne uno senza dare gli altri, e revocarli singolarmente in qualsiasi momento da Impostazioni → Privacy nell'app (art. 7.3 GDPR). Nessuna funzione dell'app è condizionata al consenso della sezione 4ter (art. 7.4 GDPR).
4bis. Dati biometrici — Analisi AI (GDPR art. 9)
La funzione "Analisi AI" elabora i video di shadow boxing per rilevare la postura del corpo (punti chiave scheletro) tramite MediaPipe su Google Cloud Run. Questi dati rientrano nella categoria dei DATI BIOMETRICI ai sensi dell'art. 9 GDPR.
Base giuridica: Art. 9.2.a — CONSENSO ESPLICITO dell'interessato. Il consenso è richiesto la prima volta che avvii l'analisi AI su un video, con una spiegazione dedicata e senza caselle preselezionate.
Revoca: puoi revocare il consenso in qualsiasi momento da Impostazioni → Privacy → Analisi biometrica dei video. Dopo la revoca nessun nuovo video viene analizzato; le analisi già eseguite restano consultabili finché non elimini i video corrispondenti, e vengono eliminate insieme a essi. La revoca non pregiudica la liceità del trattamento precedente (art. 7.3 GDPR).
Trattamento: i punti scheletro rilevati non vengono mai visualizzati come overlay sul video né condivisi con coach, palestre o terze parti. Sono usati per calcolare le metriche della sessione (conteggio colpi, colpi al minuto, distribuzione, ritmo). L'elaborazione avviene su server Google Cloud Run nell'Unione Europea (europe-west1) e i punti scheletro non vengono conservati: esistono in memoria per la durata dell'elaborazione e non vengono mai scritti su disco né associati al tuo account.
Cosa viene conservato: le metriche calcolate e l'elenco dei colpi rilevati (tipo di colpo, istante, velocità stimata), associati al video. Non conserviamo i fotogrammi né le coordinate del corpo. Se hai dato anche il consenso separato della sezione 4ter, una copia pseudonimizzata di queste stesse informazioni entra nel dataset di miglioramento del modello.
Conservazione: le metriche sono associate al documento video e vengono eliminate alla cancellazione del video o dell'account (art. 17 GDPR). Il riepilogo statistico aggregato ha una conservazione massima di 365 giorni.
4ter. Dataset per il miglioramento dell'AI (consenso separato e facoltativo)
Se lo desideri, puoi contribuire a migliorare il modello di analisi di RingVision. Questa è una scelta separata e del tutto facoltativa, distinta dal consenso della sezione 4bis: puoi usare l'Analisi AI senza attivarla, e nessuna funzione dell'app è condizionata a questo consenso (art. 7.4 GDPR).
Base giuridica: Art. 9.2.a — CONSENSO ESPLICITO, raccolto con una casella dedicata mai preselezionata, distinta da quella dell'analisi.
Cosa conserviamo: al termine di ogni analisi, e solo se il consenso è attivo, conserviamo in un archivio separato:
- le metriche calcolate della sessione (conteggio colpi, colpi al minuto, distribuzione, indicatori di qualità dell'elaborazione);
- l'elenco dei colpi rilevati: tipo di colpo, istante e velocità stimata;
- alcuni attributi tecnici della sessione: sport, guardia, durata, versione del modello.
Cosa NON conserviamo: mai il video, mai i fotogrammi, mai le coordinate del corpo, mai il tuo nome, la tua email o qualsiasi altro dato che ti identifichi direttamente. Il record non contiene nemmeno il riferimento al video da cui proviene.
Pseudonimizzazione: il record è associato a un identificativo derivato dal tuo identificativo utente tramite una funzione crittografica con chiave segreta (HMAC-SHA256), non calcolabile né reversibile dall'app né da chi accede all'archivio senza la chiave. Ti informiamo con trasparenza che si tratta di pseudonimizzazione e non di anonimizzazione: finché la chiave esiste, questi dati restano dati personali a tutti gli effetti (Considerando 26 GDPR) e continuano a godere di tutte le tutele di questa informativa, incluso il diritto alla cancellazione.
Finalità: misurare la qualità dell'analisi, individuarne gli errori e migliorare il modello che calcola le tue metriche. I dati non vengono venduti, ceduti né condivisi con terze parti, e non vengono usati per profilarti né per prendere decisioni automatizzate che ti riguardano.
Revoca e conservazione: puoi revocare il consenso in qualsiasi momento da Impostazioni → Privacy → Migliora l'AI con i tuoi dati. Dalla revoca in poi nessun nuovo dato viene conservato nell'archivio. I dati già conservati, in forma pseudonimizzata, restano nell'archivio fino alla cancellazione del tuo account, che li elimina integralmente insieme a tutto il resto (sezione 6). Se vuoi che vengano eliminati prima, puoi chiederlo in qualsiasi momento scrivendo a privacy@ringvision.app: provvederemo senza ingiustificato ritardo (art. 17 GDPR).
Dove si trovano: Firestore e Cloudflare R2, nella stessa infrastruttura descritta alla sezione 5, in un'area separata non accessibile dall'app.
4quater. Peso corporeo (dato relativo alla salute, GDPR art. 9)
Puoi registrare il tuo peso corporeo dal diario e dal modulo Fight Camp. È un dato relativo alla salute e viene raccolto solo dopo un consenso esplicito e dedicato, richiesto la prima volta che usi la funzione.
Base giuridica: Art. 9.2.a — consenso esplicito. Revoca: Impostazioni → Privacy → Registrazione del peso corporeo. Dopo la revoca il campo torna nascosto e non registriamo nuove misure; le pesate già inserite restano tue e visibili finché non le elimini.
Visibilità: il peso è accessibile solo a te. Non è visibile a coach, palestre o amministratori, nemmeno quando fai parte di una palestra. È conservato in una raccolta dedicata (una misura per giorno) ed eliminato con l'account.
La funzione ha finalità di auto-monitoraggio sportivo e non ha finalità medica: non forniamo diagnosi, consigli nutrizionali né valutazioni sanitarie.
5. Condivisione con terze parti
I dati vengono condivisi esclusivamente con:
- Google Firebase (hosting, database, autenticazione, analytics, crashlytics, notifiche)
- Google Cloud Run (elaborazione AI video in ambiente server-side sicuro, europe-west1)
- Cloudflare R2 (archiviazione sicura dei video)
- RevenueCat (gestione abbonamenti in-app)
- Stripe, Inc. (elaborazione pagamenti B2B per piani palestra)
- Apple / Google (autenticazione social e pagamenti in-app)
Non vendiamo né affittiamo i tuoi dati a terze parti.
Trasferimento extra-UE: alcuni dei fornitori sopracitati (Google Firebase, Cloudflare R2, RevenueCat) possono trattare i dati al di fuori dell'Unione Europea. Il trasferimento avviene nel rispetto delle Clausole Contrattuali Standard (SCC 2021) adottate dalla Commissione Europea ai sensi dell'art. 46 GDPR. I relativi Data Processing Agreements (DPA) sono disponibili sui siti ufficiali di ciascun fornitore:
- Google Firebase / Google LLC: partecipante all'EU-US Data Privacy Framework (DPF). DPA disponibile su: https://business.safety.google/adsprocessorterms/
- Cloudflare, Inc.: SCCs 2021 incluse nel DPA disponibile su: https://www.cloudflare.com/cloudflare-customer-dpa/
- RevenueCat, Inc.: DPA disponibile su: https://www.revenuecat.com/dpa/
- Stripe, Inc.: DPA e SCCs 2021 disponibili su: https://stripe.com/en-it/legal/dpa
6. Conservazione dei dati
I dati vengono conservati per tutta la durata dell'account. Alla cancellazione dell'account, tutti i dati personali vengono eliminati entro 30 giorni. Nello specifico:
- Video e combinazioni: eliminati immediatamente (Cloudflare R2) o entro 30 giorni (Firestore)
- Video oltre il limite del piano gratuito: alla cessazione di un piano a pagamento vengono eliminati dopo un periodo di tolleranza di 60 giorni, con preavviso — v. sezione 5quater dei Termini di Servizio
- Dataset di miglioramento AI (sezione 4ter): i record pseudonimizzati e i dati di movimento associati vengono eliminati con la cancellazione dell'account
- Riepilogo statistico delle analisi AI: massimo 365 giorni
- Note del coach: massimo 730 giorni
- Token per le notifiche push: eliminato entro 24 ore dalla cancellazione dell'account, e comunque rimosso dopo 365 giorni di inattività del dispositivo
- Eventi tecnici relativi ad abbonamenti e pagamenti: massimo 365 giorni; possono sopravvivere alla cancellazione dell'account per la riconciliazione contabile degli eventi di fatturazione (interesse legittimo, art. 6.1.f)
- Dati di diagnostica (Crashlytics): conservati per 90 giorni secondo la policy Google
- Log di accesso Firebase: conservati per 60 giorni secondo la policy Google
- Dati fiscali relativi ai pagamenti delle palestre (Stripe): 10 anni, per obbligo di legge
6bis. Registro dei trattamenti (GDPR art. 30)
Di seguito il dettaglio dei dati trattati, la relativa finalità, base giuridica e periodo di conservazione per ciascuna categoria di dato:
| Dato / Campo Firestore | Finalità | Base giuridica | Retention |
|---|---|---|---|
| email, name | Autenticazione | Art. 6.1.b | Durata account |
| age, weight, height, stance | Profilo atleta | Art. 6.1.b | Durata account |
| wins, draws, losses, matchCount | Statistiche pugile | Art. 6.1.b | Durata account |
| role (Atleta/Coach/Palestra) | Accesso funzioni | Art. 6.1.b | Durata account |
| plan, planExpiresAt, planUpdatedAt | Gestione abbonamenti | Art. 6.1.b | Durata account |
| referralProUntil, referralGrantSource | Programma invita un amico | Art. 6.1.b | Durata account |
| lastTrainingDate, totalTrainingSessions, lastVideoUploadAt | Promemoria e riepiloghi di allenamento | Art. 6.1.f | Durata account |
| palestraId, palestraName, palestraRole | Relazione palestra | Art. 6.1.b | Durata account / uscita dalla palestra |
| coachIds | Relazione coach | Art. 6.1.b | Durata account |
| videos/* (Firestore + R2) | Servizio core | Art. 6.1.b | Durata account; oltre il limite Free: 60gg dalla cessazione di un piano a pagamento (Termini, sez. 5quater) |
| video.analysis (metriche ed eventi dei colpi; i punti scheletro non sono conservati) | Analisi biometrica su consenso esplicito — shadow boxing only | Art. 9.2.a (consenso esplicito) | Durata video; eliminati con video o account. Riepilogo aggregato: 365gg |
| analysis_records/* + copia eventi su R2 (pseudonimizzati, nessun riferimento al video) | Miglioramento del modello di analisi AI — sezione 4ter | Art. 9.2.a (consenso esplicito separato e facoltativo) | Fino alla cancellazione dell'account (o su richiesta). La revoca ferma i nuovi record |
| combinations/*, combo_templates/* | Servizio core, libreria tecnica | Art. 6.1.b | Durata account |
| training_sessions/* | Calendario e agenda palestra | Art. 6.1.b | Durata account |
| training_programs/* | Schede di allenamento assegnate dal coach | Art. 6.1.b | Durata account |
| coachNotes/*, tags/*, feedback combo | Feedback coach | Art. 6.1.b | coachNotes 730gg; il resto durata account |
| fight_camps/* + note e obiettivi | Preparazione al match | Art. 6.1.b | Data evento + 90gg |
| training_goals/* (target, period, type) | Obiettivi privati atleta (week/month/quarter) | Art. 6.1.b | Durata account, owner-only |
| training_logs/* (durationMin, feeling, rpe, mentalState, notes) | Diario allenamento — auto-monitoraggio personale, formulazione non clinica | Art. 6.1.b (dati inseriti dall'utente nella funzione che sta usando) | Durata account, owner-only, non condiviso con coach o palestra |
| users/{uid}/body_weights/* (una misura per giorno) | Registrazione del peso corporeo — sezione 4quater | Art. 9.2.a (consenso esplicito) | Durata account, owner-only anche in lettura |
| users/{coachId}/athlete_payments/* | Stato della quota che l'atleta paga al coach, registrato manualmente dal coach. Nessun incasso in app | Art. 6.1.f | Fino alla rimozione dell'atleta dal roster |
| referral_codes/*, referral_events/*, credit_ledger/* | Programma invita un amico e premi | Art. 6.1.b | Durata account |
| users/{uid}/notifications/* | Storico delle notifiche ricevute in app | Art. 6.1.b | 90 giorni |
| analyticsConsentAt, biometricAnalysisConsentAt, consentDatasetAt, bodyWeightConsentAt (+ relative revoche) | Prova dei consensi prestati e revocati | Art. 7.1 | Durata account; eliminati con l'account |
| fcmToken, devices/* | Notifiche push | Art. 6.1.a | < 24h post-cancellaz.; 365gg se il dispositivo è inattivo |
| analytics_monetization/* | Riconciliazione eventi di abbonamento | Art. 6.1.f | 365 giorni |
| Firebase Analytics | Statistiche d'uso, solo dopo consenso | Art. 6.1.a | 14 mesi (Google) |
| Firebase Crashlytics | Diagnostica | Art. 6.1.f | 90 giorni (Google) |
| Log accesso Firebase Auth | Sicurezza | Art. 6.1.f | 60 giorni (Google) |
| Hive (locale, cifrato AES-256) | Preferenze locali del dispositivo | Art. 6.1.b | Fino a disinstallaz. |
| Stripe customerId (B2B) | Pagamenti palestra | Art. 6.1.b | Obbligo fiscale: 10a |
Alla cancellazione dell'account, la Cloud Function onUserDeleted esegue automaticamente la rimozione di tutti i dati personali (cascade delete) da Firestore, Cloudflare R2 e dalle collezioni associate: video, tag, note, combo, sessioni, schede, diario, pesate, obiettivi, referral, inviti palestra e i record pseudonimizzati del dataset di miglioramento AI. I campi che registrano i tuoi consensi vengono eliminati insieme all'account.
7. Diritti dell'utente (GDPR art. 15-22)
Hai diritto a:
- Accedere ai tuoi dati (art. 15) — disponibile in Impostazioni → Esporta i miei dati
- Rettificare dati inesatti (art. 16) — disponibile in Impostazioni → Modifica profilo
- Cancellare i tuoi dati, "diritto all'oblio" (art. 17) — disponibile in Impostazioni → Elimina account
- Revocare i consensi prestati (art. 7.3) — disponibile in Impostazioni → Privacy, con un interruttore per ciascuno dei quattro consensi
- Limitare il trattamento (art. 18) — richiesta via email a privacy@ringvision.app
- Portabilità dei dati (art. 20) — disponibile in Impostazioni → Esporta i miei dati (formato JSON)
- Opporsi al trattamento (art. 21) — disponibile in Impostazioni → Privacy
Per esercitare i tuoi diritti: privacy@ringvision.app
7bis. Reclamo all'autorità di controllo (GDPR art. 77)
Hai il diritto di presentare reclamo al Garante per la protezione dei dati personali (autorità di controllo italiana) se ritieni che il trattamento dei tuoi dati personali violi il Regolamento GDPR.
Garante per la protezione dei dati personali:
- Sito web: https://www.garanteprivacy.it
- Email: garante@gpdp.it
- Fax: +39 06 696773785
- Indirizzo: Piazza Venezia 11, 00187 Roma (RM), Italia
8. Sicurezza
I dati sono protetti tramite:
- Connessioni crittografate (HTTPS/TLS)
- Autenticazione Firebase con regole di accesso granulari
- Verifica dell'integrità dell'app (App Check) sugli accessi ai contenuti
- Nessun accesso ai dati di pagamento (gestiti da Apple, Google e Stripe)
9. Età minima
Per usare RingVision devi avere almeno 16 anni. Al primo accesso ti chiediamo di confermarlo insieme all'accettazione dei Termini di Servizio. Se veniamo a conoscenza di un account creato da una persona di età inferiore, lo cancelliamo insieme ai dati associati.
10. Modifiche alla Privacy Policy
Eventuali modifiche saranno notificate tramite aggiornamento in-app. Quando le modifiche riguardano i trattamenti descritti in questa informativa, ti chiediamo di prenderne visione e di accettarle nuovamente prima di continuare a usare l'app.
11. Contatti
Per qualsiasi domanda: privacy@ringvision.app
12. Violazione dei dati personali (GDPR artt. 33-34)
In caso di violazione dei dati personali (data breach) che comporti un rischio per i diritti e le libertà degli interessati, provvederemo a:
- Notificare il Garante per la protezione dei dati personali entro 72 ore dalla scoperta della violazione (art. 33 GDPR), salvo che la violazione non sia suscettibile di presentare un rischio per i diritti e le libertà delle persone fisiche.
- Comunicare la violazione agli interessati senza ingiustificato ritardo qualora la stessa possa presentare un rischio elevato per i loro diritti e libertà (art. 34 GDPR).
La comunicazione agli interessati includerà: la natura della violazione, i dati di contatto del responsabile della protezione dei dati (o del punto di contatto), le probabili conseguenze della violazione e le misure adottate o proposte per porvi rimedio.
13. Diritto di opposizione al trattamento (GDPR art. 21)
Hai il diritto di opporti in qualsiasi momento al trattamento dei tuoi dati personali per:
a) Finalità analitiche (Firebase Analytics): puoi esercitare questo diritto direttamente dall'app in Impostazioni → Privacy → Statistiche d'uso anonime, oppure inviando una richiesta a privacy@ringvision.app.
b) Finalità di marketing (notifiche promozionali): puoi revocare il consenso alle notifiche di marketing in qualsiasi momento tramite Impostazioni → Notifiche, oppure inviando una richiesta a privacy@ringvision.app. La revoca non pregiudica la liceità del trattamento precedente alla revoca stessa (art. 7.3 GDPR).