Informativa sulla Privacy — PAO Inventory
La presente informativa descrive come l'applicazione PAO Inventory ("l'App") tratta i dati degli utenti, ai sensi del Regolamento (UE) 2016/679 ("GDPR") e in conformità alle norme di Google Play. È redatta sulla base del reale funzionamento dell'App: descrive i trattamenti effettivamente attivi e indica esplicitamente quelli predisposti ma non attivi.
1. Titolare del trattamento
- Giacomo Visentin
- Contatto: helpdesk.vise@gmail.com
Per l'esercizio dei diritti o per qualsiasi domanda su questa informativa puoi scrivere all'indirizzo email indicato.
2. Principio generale: i tuoi dati restano sul dispositivo
PAO Inventory è progettata secondo un principio "local-first": il tuo inventario, le foto dei prodotti, le categorie, le posizioni e le impostazioni sono conservati esclusivamente in locale sul tuo dispositivo, in un database sul dispositivo e nell'area di archiviazione privata dell'App.
I dati escono dal dispositivo solo nei casi limitati e specifici descritti alla Sezione 4 (riconoscimento delle immagini, ricerca del codice a barre, servizi Firebase e annunci pubblicitari).
3. Dati trattati localmente (solo sul dispositivo)
I seguenti dati sono creati e conservati solo sul tuo dispositivo e non vengono trasmessi al titolare:
- Inventario prodotti: nome, descrizione, codice a barre/QR, date di acquisto/apertura/scadenza, stato, quantità, mesi PAO, lotto.
- Foto dei prodotti: le immagini scattate (fronte/retro) sono salvate come file JPEG nell'archivio privato dell'App, ridimensionate e compresse. Nel database viene memorizzato solo il percorso locale del file.
- Testo riconosciuto (OCR) ed eventuali metadati estratti dall'etichetta.
- Categorie, marche e posizioni di archiviazione: etichette di testo libero scelte da te. Ti invitiamo a non inserire dati personali identificativi in questi campi liberi.
- Impostazioni e preferenze, incluse le preferenze di notifica.
- Consensi: registrazione delle tue scelte (Termini, Privacy, Analytics, Notifiche) con data e versione del documento.
- Contatori d'uso e crediti relativi alla monetizzazione (vedi Sezione 4.4).
- Identificativo di installazione (
installation_id): un identificativo casuale generato al primo avvio, usato solo localmente per gestire i contatori d'uso. Non viene mai trasmesso ad alcun server.
Non è previsto alcun invio dell'inventario al cloud: la funzione di sincronizzazione è presente nel codice ma disattivata.
3.1 Backup di sistema di Android
L'App non disattiva il backup automatico di Android (Auto Backup), attivo per impostazione predefinita sui dispositivi recenti. Di conseguenza il sistema operativo può copiare i dati dell'App — compresi il database dell'inventario e le foto dei prodotti — in una cartella privata del tuo account Google Drive, fino a un massimo di 25 MB, e ripristinarli se reinstalli l'App.
Questa copia è effettuata da Android, non dall'App: il titolare non vi ha accesso e non può leggerla. È conservata nel tuo spazio Google secondo le condizioni di Google, non conta nella tua quota di Drive, e viene sostituita a ogni nuovo backup.
Puoi disattivare o gestire questa funzione dalle impostazioni del telefono (in genere Impostazioni → Google → Backup) e puoi eliminare i backup esistenti dal tuo account Google.
4. Dati trasmessi a servizi esterni
L'App comunica con l'esterno solo per le funzioni seguenti, sempre tramite connessioni cifrate (HTTPS).
4.1 Riconoscimento delle immagini (backend + Google Gemini Developer API)
Quando usi la funzione di riconoscimento automatico del prodotto, l'App invia al nostro backend (Google Cloud Functions, regione europe-west8): le due foto del prodotto (fronte e retro) in formato JPEG, un identificativo di richiesta casuale e il codice a barre/QR se presente. La richiesta è protetta da un token di autenticazione anonima Firebase e da un token Firebase App Check.
Il backend inoltra le immagini alla Google Gemini Developer API (modello Gemini) al solo scopo di riconoscere i dati del prodotto e restituirli all'App. La chiamata avviene lato server ed è autenticata con una chiave API custodita in Secret Manager (mai presente nell'App); il servizio Gemini è erogato da un progetto Google Cloud dedicato, distinto da quello che ospita Firebase e Firestore. Le immagini non vengono salvate: restano in memoria solo per la durata della richiesta e non sono archiviate su disco, database o storage. Il backend registra soltanto metadati tecnici (identificativo di richiesta, esito, durata, dimensione in byte delle immagini, identificativo utente anonimo in forma hashed, codice di errore); non registra mai le immagini, il testo OCR, i token o la risposta del modello.
Il progetto utilizza la Google Gemini Developer API con un piano a pagamento. Secondo la documentazione di Google relativa ai servizi a pagamento della Gemini Developer API, i contenuti inviati tramite tali servizi non vengono utilizzati per migliorare o addestrare i modelli generativi di Google. Google può comunque trattare temporaneamente i dati nella misura necessaria per fornire il servizio, garantire la sicurezza, prevenire gli abusi e adempiere agli obblighi di legge.
- Base giuridica: esecuzione del servizio richiesto (art. 6.1.b GDPR).
- Puoi evitare questo trattamento non utilizzando la funzione di riconoscimento automatico e inserendo i dati manualmente.
4.2 Ricerca del codice a barre (Open Beauty Facts / Open Food Facts)
Se un prodotto ha un codice a barre, l'App può interrogare i database pubblici Open Beauty Facts e, in alternativa, Open Food Facts per recuperare informazioni sul prodotto. In questo caso viene inviato solo il codice a barre, tramite una richiesta HTTPS. Non vengono inviati foto, identificativi, dati di localizzazione o altri dati personali.
- Base giuridica: legittimo interesse a fornire dati di prodotto accurati (art. 6.1.f GDPR).
- Questa funzione è attiva per impostazione predefinita e può essere disattivata; quando è disattivata, nemmeno il codice a barre lascia il dispositivo.
4.3 Servizi Firebase (Google)
- Autenticazione anonima Firebase: l'App crea una sessione anonima per dialogare in modo sicuro con il backend. Viene generato un identificativo casuale (UID); non vengono raccolti email, password o account social. Non è possibile risalire alla tua identità a partire da questo identificativo.
- Firebase App Check: verifica che le richieste provengano da un'istanza legittima dell'App (in produzione tramite Google Play Integrity). Serve a prevenire abusi; non raccoglie dati personali di contenuto.
- Cloud Firestore (lato backend): memorizza solo metadati necessari alla gestione delle quote di scansione e dei crediti, associati all'identificativo anonimo: conteggio delle scansioni gratuite giornaliere; registro tecnico delle scansioni (identificativo, tipologia, stato, date, codice di errore); crediti derivanti dai video con premio; dati di controllo dei riscatti dei premi. Firestore non contiene immagini, testo OCR o il contenuto del tuo inventario.
Base giuridica: esecuzione del servizio e prevenzione degli abusi (art. 6.1.b e 6.1.f GDPR).
4.4 Google AdMob e annunci pubblicitari
L'App mostra video pubblicitari con premio ("rewarded") tramite Google AdMob per consentire scansioni aggiuntive. AdMob è fornito da Google e può utilizzare un identificatore pubblicitario del dispositivo per erogare gli annunci e misurarne le prestazioni (vedi Sezione 8).
- Consenso (UMP): all'avvio l'App utilizza la User Messaging Platform di Google per raccogliere, dove richiesto (es. nello Spazio Economico Europeo), il tuo consenso in materia di annunci. In assenza di consenso alla personalizzazione (Scopo 1 del quadro IAB TCF), l'App richiede annunci non personalizzati.
- Verifica lato server (SSV): per attribuire correttamente il premio, AdMob invia al nostro backend una notifica firmata contenente un identificativo opaco e casuale del riscatto e un identificativo di transazione. Non vengono trasmessi il tuo UID, token o dati personali.
Base giuridica: consenso per gli annunci personalizzati (art. 6.1.a GDPR); legittimo interesse per gli annunci non personalizzati e per la prevenzione delle frodi pubblicitarie (art. 6.1.f GDPR). Informazioni su come Google tratta i dati: policies.google.com/technologies/partner-sites.
4.5 Abbonamenti Premium (RevenueCat) — previsto, non attivo
L'App prevede un abbonamento Premium gestito tramite RevenueCat. Nella versione attuale questa funzione non è attiva e non viene trattato alcun dato tramite RevenueCat. Questa informativa sarà aggiornata prima dell'eventuale attivazione.
4.6 Analytics
L'App include un interruttore di consenso "Analytics". Nella versione attuale gli eventi non vengono trasmessi ad alcun servizio di analisi esterno: sono soltanto scritti nei log tecnici locali del dispositivo a fini di debug. Nessun dato di analisi lascia il dispositivo. Qualora in futuro venisse attivato un provider di analisi, questa informativa sarà aggiornata e il trattamento avverrà solo previo tuo consenso.
5. Notifiche
Le notifiche di scadenza sono notifiche locali, pianificate e mostrate direttamente dal dispositivo. Non vengono utilizzati servizi di notifica push remoti né token di dispositivo. Il contenuto della notifica (ad es. il nome del prodotto) resta sul dispositivo.
6. Permessi Android
- Fotocamera: per scansionare i codici a barre e fotografare i prodotti.
- Accesso alle foto (Galleria): solo se scegli volontariamente di selezionare una foto già presente sul dispositivo invece di scattarla. Su Android 13 e versioni successive viene usato il selettore foto moderno del sistema; sui dispositivi Android precedenti può essere richiesto l'accesso alle immagini necessario per la selezione. L'App non accede alla galleria in background e non carica automaticamente le foto del dispositivo.
- Notifiche / Promemoria pianificati / Avvio all'accensione: per mostrare e ripristinare le notifiche locali di scadenza.
- Accesso a Internet: per le funzioni descritte alla Sezione 4.
- Il modulo pubblicitario può richiedere l'accesso all'identificatore pubblicitario (vedi Sezione 8).
7. Basi giuridiche del trattamento (GDPR art. 6)
- Esecuzione del servizio (art. 6.1.b): riconoscimento delle immagini, gestione delle quote di scansione.
- Consenso (art. 6.1.a): annunci personalizzati tramite AdMob; funzioni opzionali soggette a consenso.
- Legittimo interesse (art. 6.1.f): ricerca del codice a barre, prevenzione di abusi e frodi, annunci non personalizzati.
8. Cookie e identificatori pubblicitari (AdMob)
L'App non utilizza cookie di navigazione web. Tuttavia, il modulo Google AdMob può utilizzare tecnologie di archiviazione locale e identificatori pubblicitari del dispositivo, tra cui:
- l'identificatore pubblicitario Android (Advertising ID / AAID), un identificativo reimpostabile dall'utente dalle impostazioni del dispositivo;
- identificatori e tecnologie analoghe utilizzati da Google per erogare gli annunci, limitarne la frequenza, misurarne le prestazioni e prevenire le frodi.
Gestione del consenso: dove richiesto, il consenso all'uso di questi identificatori per annunci personalizzati è raccolto tramite la User Messaging Platform (Sezione 4.4). In assenza di consenso, gli annunci sono richiesti come non personalizzati. Puoi inoltre reimpostare o limitare l'identificatore pubblicitario dalle impostazioni Android (Impostazioni → Google → Annunci).
9. Trasferimenti internazionali di dati
Alcuni fornitori (Google Firebase, Google Gemini Developer API, Google AdMob) sono società del gruppo Google e possono trattare i dati su infrastrutture situate anche fuori dallo Spazio Economico Europeo. Tali trasferimenti avvengono nel quadro delle garanzie previste dal GDPR (Capo V), incluse, ove applicabili, le Clausole Contrattuali Standard della Commissione Europea. Le funzioni di backend sono ospitate nella regione europea europe-west8.
10. Conservazione dei dati
- Dati locali sul dispositivo (inventario, foto, impostazioni, consensi): conservati fino a quando non li elimini dall'App o disinstalli l'App.
- Dati lato server (metadati su Firestore): dati di controllo dei riscatti dei premi 30 giorni; conteggi d'uso e registro tecnico delle scansioni 12 mesi. Al termine di questi periodi i dati sono cancellati automaticamente.
- Immagini inviate per il riconoscimento: non conservate (trattate solo in memoria per la durata della richiesta).
11. Sicurezza
- Le comunicazioni con l'esterno avvengono tramite HTTPS.
- L'accesso al backend è protetto da autenticazione anonima Firebase e App Check.
- Nei log lato server l'identificativo utente è memorizzato solo in forma hashed (non reversibile); non vengono mai registrati immagini, testo OCR, token o firme.
- Le chiavi dei servizi sono custodite lato server (Secret Manager) e non sono presenti nell'App.
12. Minori
L'App non è destinata ai minori di 16 anni e non raccoglie consapevolmente i loro dati. Se ritieni che un minore ci abbia fornito dati, contattaci.
13. I tuoi diritti (GDPR)
In quanto interessato hai diritto di: accesso (art. 15), rettifica (art. 16), cancellazione (art. 17), limitazione (art. 18), portabilità (art. 20), opposizione al trattamento basato sul legittimo interesse (art. 21) e revoca del consenso in qualsiasi momento (art. 7.3).
Poiché la maggior parte dei dati è conservata solo sul tuo dispositivo, puoi esercitare direttamente molti di questi diritti eliminando i singoli elementi o disinstallando l'App. Per i dati lato server, associati a un identificativo anonimo, potremmo non essere in grado di ricollegarli alla tua identità (art. 11 GDPR); ti forniremo comunque assistenza ove tecnicamente possibile.
Per esercitare i tuoi diritti scrivi a helpdesk.vise@gmail.com. Hai inoltre il diritto di proporre reclamo all'autorità di controllo. In Italia: Garante per la protezione dei dati personali (garanteprivacy.it).
14. Modifiche a questa informativa
Questa informativa può essere aggiornata per riflettere modifiche dell'App o degli obblighi normativi. In caso di modifiche sostanziali ne daremo evidenza aggiornando la data in cima al documento.
15. Contatti
Giacomo Visentin — helpdesk.vise@gmail.com