Luna is a privacy-first FemTech app. Your cycle, journal, and profile fields are encrypted with AES-256 on your device before they reach our database — we store ciphertext and cannot read those fields. AI personalisation (recipe + nutrition tips) is not encrypted at the moment of generation: we send categorical signals (diet category, age bucket, cycle phase, validated conditions) to Anthropic via our EU backend under a zero-retention contract. We never link those AI signals back to your identity in our recipe pool — what you have seen is tracked only on your device.
🔒 Encryption (KEK/DEK)
All health data (cycle, symptoms, moods, BBT, journal, sexual activity) is AES-256 encrypted on-device with a random Data Encryption Key (DEK)
The DEK is wrapped by a Key Encryption Key (KEK) derived from your password via PBKDF2
Standard mode: password recovery possible via server-held escrow secret
Max Privacy mode (planned): only you hold the key — no recovery
📊 Data We Process
Stored encrypted (unreadable to us — special category under GDPR Art. 9):
Cycle data, period entries, symptoms, moods, basal body temperature, cervical mucus, ovulation tests, sexual activity
Journal entries (free-text)
AI cycle predictions
Stored unencrypted (necessary for service operation):
Email address (login, Supabase Auth)
Community posts (intentionally public / anonymous)
App settings (language, colour scheme)
Subscription state (tier, expiry)
🤖 How AI Personalisation Works
For features that need AI — daily nutrition tips, recipe suggestions, the Sofía nutrition coach — we cannot keep the inputs encrypted at the moment of generation, because the AI provider needs to read them to write a personalised reply. We minimise what leaves your device and what we retain server-side:
Categorical only. We send diet category ("vegan", "pescatarian"), age bucket, cycle phase, validated condition flags (from a closed whitelist), activity level, regional cuisine preference. We do not send your name, email, exact birthday, exact weight or height, raw journal text, medication names, or user ID.
Transient, zero-retention. Calls to Anthropic Claude run under Enterprise zero-retention terms — Anthropic does not store our requests or train on them.
Anonymous recipe pool. When we cache a generated recipe for re-use by other users, we store it under an HMAC bucket hash (computed with a server-side secret) — never under your user ID. The set of recipes you have seen is tracked only in your device's local database, sent to our backend as an opaque Bloom-filter that lets the server skip already-seen entries without learning which IDs you hold.
EU-routed. Your device never contacts an AI provider directly — every call passes through our backend in Falkenstein, Germany.
🤖 Third Parties & External APIs
Anthropic Claude (USA, accessed under Enterprise zero-retention): AI replies for the nutrition coach + daily tips + recipe text. Sees only the categorical signals listed above for the duration of the response, no longer.
OpenAI DALL-E + Pexels (USA): recipe images. Only the recipe title (a short noun phrase like "salmon avocado omelet") is sent; the cache key on our side is hashed so the plaintext title is not retained alongside the image URL. No personal or health data.
Sentry (Germany / EU): crash reporting and diagnostic logs. Receives stack traces, device model, OS version, and your Supabase user ID for crash attribution. Receives no cycle, symptom, journal, or other health data; payloads with known sensitive markers are dropped before upload.
OpenStreetMap Nominatim (EU): city name autocomplete in the residence input (Premium feature). Receives only the search query string you type; never your identity.
Apple HealthKit (iOS only, opt-in): reads menstrual flow records you have already logged in Apple Health, with your explicit permission.
📱 Health Connect (Android)
Luna v1.0 on Android does not integrate with Google Health Connect. No android.permission.health.* permissions are requested. Future releases may offer Health Connect import as an opt-in feature.
⚖️ Legal Basis (GDPR)
Art. 6(1)(a): Consent — for AI coaching, recipe suggestions, and city autocomplete
Art. 6(1)(b): Contract performance — for cycle tracking and core app features
Art. 9(2)(a): Explicit consent — for health data (special category)
Art. 6(1)(f): Legitimate interest — crash reporting (with the right to object)
🌍 Infrastructure
Backend: Hetzner Cloud, Falkenstein, Germany (EU)
Database: Supabase, Frankfurt, Germany (EU)
All user data stays in the EU. No transfer to third countries (third-party AI calls are de-identified before leaving the EU).
🛡️ Biometric Data
Face ID / Touch ID / Android biometrics are processed locally on your device only
We do not store any biometric data
The cached unlock token resides in iOS Keychain / Android Keystore (hardware-protected)
❌ What We Do Not Do
No advertising, no advertising trackers, no behavioural analytics
No data sales, no data sharing with brokers
No profiling algorithms (predictions are computed on-device from your own history)
Luna ist eine Privacy-First-FemTech-App. Dein Zyklus, dein Journal und deine Profilfelder werden mit AES-256 auf deinem Gerät verschlüsselt, bevor sie unsere Datenbank erreichen — wir speichern Chiffrate und können diese Felder nicht lesen. KI-Personalisierung (Rezeptvorschläge + Tagestipps) ist im Moment der Generierung nicht verschlüsselt: wir senden kategorische Signale (Diät-Kategorie, Altersgruppe, Zyklusphase, validierte Erkrankungs-Marker) über unser EU-Backend an Anthropic unter einem Zero-Retention-Vertrag. Diese Signale werden in unserem Rezept-Pool niemals mit deiner Identität verknüpft — was du gesehen hast, wird ausschließlich auf deinem Gerät getrackt.
🔒 Verschlüsselung (KEK/DEK)
Alle Gesundheitsdaten (Zyklus, Symptome, Stimmungen, BBT, Journal, sexuelle Aktivität) werden auf dem Gerät mit einem zufälligen Datenschlüssel (DEK) AES-256 verschlüsselt
Der DEK wird mit einem aus deinem Passwort abgeleiteten Key Encryption Key (KEK) per PBKDF2 verschlossen
Standard-Modus: Passwort-Recovery möglich über server-seitiges Escrow-Geheimnis
Max-Privacy-Modus (geplant): Nur du hast den Schlüssel — kein Recovery
📊 Welche Daten wir verarbeiten
Verschlüsselt gespeichert (für uns unlesbar — besondere Kategorie nach DSGVO Art. 9):
Unverschlüsselt gespeichert (notwendig für Dienstbetrieb):
E-Mail-Adresse (Login, Supabase Auth)
Community-Posts (bewusst öffentlich/anonym)
App-Einstellungen (Sprache, Farbschema)
Abo-Status (Stufe, Ablaufdatum)
🤖 Wie KI-Personalisierung funktioniert
Für Features, die KI brauchen — tägliche Ernährungstipps, Rezeptvorschläge, den Sofía-Coach — können wir die Eingaben im Moment der Generierung nicht verschlüsselt halten, weil der KI-Anbieter sie lesen muss, um eine personalisierte Antwort zu schreiben. Wir minimieren, was dein Gerät verlässt und was wir server-seitig behalten:
Nur kategorisch. Wir senden Diät-Kategorie ("vegan", "pescetarisch"), Altersgruppe, Zyklusphase, validierte Erkrankungs-Marker (aus geschlossener Whitelist), Aktivitätslevel, regionale Küchen-Präferenz. Wir senden nicht: deinen Namen, deine E-Mail, dein exaktes Geburtsdatum, exaktes Gewicht oder Größe, rohen Journal-Text, Medikamentennamen oder User-ID.
Transient, Zero-Retention. Aufrufe an Anthropic Claude laufen unter Enterprise-Zero-Retention-Bedingungen — Anthropic speichert unsere Anfragen nicht und trainiert nicht darauf.
Anonymer Rezept-Pool. Wenn wir ein generiertes Rezept zur Wiederverwendung durch andere Nutzer cachen, speichern wir es unter einem HMAC-Bucket-Hash (mit einem server-seitigen Geheimnis berechnet) — niemals unter deiner User-ID. Welche Rezepte du schon gesehen hast, wird ausschließlich in der lokalen Datenbank deines Geräts getrackt; an unser Backend wird das nur als opaker Bloom-Filter geschickt, mit dem der Server bereits gesehene Einträge überspringen kann, ohne zu erfahren, welche IDs du hältst.
EU-geroutet. Dein Gerät kontaktiert keinen KI-Anbieter direkt — jede Anfrage läuft über unser Backend in Falkenstein.
🤖 Externe Dienste & APIs
Anthropic Claude (USA, zugegriffen unter Enterprise-Zero-Retention): KI-Antworten für den Ernährungs-Coach + Tagestipps + Rezepttexte. Sieht nur die oben aufgelisteten kategorischen Signale für die Dauer der Antwort, danach nicht mehr.
OpenAI DALL-E + Pexels (USA): Rezeptbilder. Es wird nur der Rezepttitel (eine kurze Phrase wie "salmon avocado omelet") gesendet; der Cache-Key auf unserer Seite ist gehasht, sodass der Klartext-Titel nicht neben der Bild-URL persistiert wird. Keine persönlichen oder Gesundheitsdaten.
Sentry (Deutschland / EU): Crash-Reporting und Diagnose-Logs. Erhält Stacktraces, Gerätemodell, OS-Version und deine Supabase-User-ID zur Crash-Zuordnung. Erhält keinerlei Zyklus-, Symptom-, Journal- oder andere Gesundheitsdaten; Payloads mit bekannten sensiblen Markern werden vor dem Upload verworfen.
OpenStreetMap Nominatim (EU): Stadt-Autovervollständigung im Wohnort-Feld (Premium). Erhält nur die Sucheingabe; niemals deine Identität.
Apple HealthKit (nur iOS, Opt-in): liest Periodenflow-Einträge aus Apple Health, die du dort bereits eingetragen hast — nur mit deiner ausdrücklichen Erlaubnis.
📱 Health Connect (Android)
Luna v1.0 auf Android integriert sich nicht mit Google Health Connect. Keine android.permission.health.*-Berechtigungen werden angefordert. Künftige Versionen könnten Health-Connect-Import als optionales Feature anbieten.
⚖️ Rechtsgrundlagen (DSGVO)
Art. 6(1)(a): Einwilligung — für KI-Coaching, Rezeptvorschläge und Stadt-Autovervollständigung
Art. 6(1)(b): Vertragserfüllung — für Zyklustracking und Kernfunktionen
Art. 9(2)(a): Ausdrückliche Einwilligung — für Gesundheitsdaten (besondere Kategorie)
Luna FemTech · privacy@luna-femtech.com
Empresa operadora: icoso consulting S.L., Santander, España (UE)
🎯 Breve y honesto
Luna es una app FemTech con privacidad-primero. Tu ciclo, diario y campos de perfil se cifran con AES-256 en tu dispositivo antes de llegar a nuestra base de datos — almacenamos texto cifrado y no podemos leer esos campos. La personalización por IA (sugerencias de recetas + consejos diarios) no está cifrada en el momento de la generación: enviamos señales categóricas (categoría de dieta, grupo de edad, fase del ciclo, marcadores de condiciones validadas) a Anthropic vía nuestro backend en la UE bajo un contrato de cero-retención. Nunca vinculamos esas señales con tu identidad en nuestro pool de recetas — lo que has visto se registra solo en tu dispositivo.
🔒 Cifrado (KEK/DEK)
Todos los datos de salud (ciclo, síntomas, ánimo, TB, diario, actividad sexual) están cifrados con AES-256 en el dispositivo con una clave aleatoria (DEK)
La DEK se protege con una Key Encryption Key (KEK) derivada de tu contraseña vía PBKDF2
Modo estándar: recuperación de contraseña posible mediante secreto de custodia en servidor
Modo Max Privacy (planificado): solo tú tienes la clave — sin recuperación
📊 Datos que procesamos
Almacenados cifrados (ilegibles para nosotros — categoría especial según RGPD Art. 9):
Nombre, avatar, datos del perfil (dieta, condiciones, alergias, objetivos, altura, peso)
Datos del ciclo, registros de menstruación, síntomas, ánimo, temperatura basal, moco cervical, tests de ovulación, actividad sexual
Entradas del diario (texto libre)
Predicciones de IA
Almacenados sin cifrar (necesario para el servicio):
Email (login, Supabase Auth)
Posts de comunidad (intencionalmente públicos/anónimos)
Ajustes de la app (idioma, paleta)
Estado de suscripción (nivel, caducidad)
🤖 Cómo funciona la personalización por IA
Para las funciones que necesitan IA — consejos diarios de nutrición, sugerencias de recetas, la coach Sofía — no podemos mantener las entradas cifradas en el momento de la generación, porque el proveedor de IA necesita leerlas para escribir una respuesta personalizada. Minimizamos lo que sale de tu dispositivo y lo que retenemos en servidor:
Solo categórico. Enviamos categoría de dieta ("vegan", "pescatarian"), grupo de edad, fase del ciclo, marcadores de condición validados (de una lista cerrada), nivel de actividad, preferencia regional de cocina. No enviamos: tu nombre, email, fecha de nacimiento exacta, peso o altura exactos, texto crudo del diario, nombres de medicamentos ni ID de usuaria.
Transitorio, cero-retención. Las llamadas a Anthropic Claude se realizan bajo términos Enterprise de cero-retención — Anthropic no almacena nuestras peticiones ni se entrena con ellas.
Pool de recetas anónimo. Cuando cacheamos una receta generada para reutilización por otras usuarias, la almacenamos bajo un hash HMAC de bucket (calculado con un secreto del servidor) — nunca bajo tu ID de usuaria. Las recetas que has visto se registran solo en la base de datos local de tu dispositivo; al backend solo enviamos un filtro Bloom opaco que permite saltar entradas ya vistas sin que el servidor aprenda qué IDs tienes.
Enrutado por la UE. Tu dispositivo nunca contacta directamente con un proveedor de IA — cada llamada pasa por nuestro backend en Falkenstein.
🤖 Terceros y APIs externas
Anthropic Claude (EE.UU., bajo términos Enterprise de cero-retención): respuestas de IA para la coach de nutrición + consejos diarios + textos de recetas. Ve solo las señales categóricas listadas arriba durante la respuesta, no después.
OpenAI DALL-E + Pexels (EE.UU.): imágenes de recetas. Solo se envía el título de la receta (una frase corta como "salmon avocado omelet"); la clave de caché de nuestro lado está hasheada, de modo que el título en texto plano no se retiene junto a la URL de la imagen. Sin datos personales ni de salud.
Sentry (Alemania / UE): informes de fallos y logs de diagnóstico. Recibe trazas de pila, modelo de dispositivo, versión del SO y tu ID de usuaria de Supabase para atribuir fallos. No recibe datos del ciclo, síntomas, diario ni otros datos de salud; las cargas con marcadores sensibles conocidos se descartan antes del envío.
OpenStreetMap Nominatim (UE): autocompletado de ciudades en el campo de residencia (Premium). Recibe solo el texto que escribes; nunca tu identidad.
Apple HealthKit (solo iOS, opt-in): lee registros de menstruación que ya hayas registrado en Apple Health, con tu permiso explícito.
📱 Health Connect (Android)
Luna v1.0 en Android no se integra con Google Health Connect. No solicitamos permisos android.permission.health.*. Versiones futuras podrían ofrecer la importación de Health Connect como función opcional.
⚖️ Base legal (RGPD)
Art. 6(1)(a): Consentimiento — para coaching de IA, sugerencias de recetas y autocompletado de ciudades
Art. 6(1)(b): Ejecución contractual — para seguimiento del ciclo y funciones principales
Art. 9(2)(a): Consentimiento explícito — para datos de salud (categoría especial)
Art. 6(1)(f): Interés legítimo — informes de fallos (con derecho de oposición)
🌍 Infraestructura
Backend: Hetzner Cloud, Falkenstein, Alemania (UE)
Base de datos: Supabase, Fráncfort, Alemania (UE)
Todos los datos de las usuarias permanecen en la UE. Sin transferencia a terceros países (las llamadas a IA externa se anonimizan antes de salir de la UE).
🛡️ Datos biométricos
Face ID / Touch ID / biometría Android se procesan únicamente en local en tu dispositivo
No almacenamos datos biométricos
El token de desbloqueo cacheado reside en iOS Keychain / Android Keystore (protegido por hardware)
❌ Lo que no hacemos
Sin publicidad, sin rastreadores publicitarios, sin analítica de comportamiento
Sin venta de datos, sin compartirlos con intermediarios
Sin algoritmos de perfilado (las predicciones se calculan en el dispositivo a partir de tu propio historial)
✅ Tus derechos (RGPD)
Art. 15: Acceso → Ajustes > Descargar datos
Art. 16: Rectificación → editar perfil en cualquier momento
Art. 17: Supresión → Ajustes > Eliminar cuenta (inmediato, irreversible)
Art. 20: Portabilidad → exportación JSON de todos los datos
Art. 7(3): Revocación del consentimiento → posible en cualquier momento
Luna FemTech · privacy@luna-femtech.com
Société exploitante : icoso consulting S.L., Santander, Espagne (UE)
🎯 Bref et honnête
Luna est une application FemTech privacy-first. Votre cycle, votre journal et vos champs de profil sont chiffrés en AES-256 sur votre appareil avant d'atteindre notre base de données — nous stockons du texte chiffré et ne pouvons pas lire ces champs. La personnalisation par IA (suggestions de recettes + conseils quotidiens) n'est pas chiffrée au moment de la génération : nous envoyons des signaux catégoriels (catégorie de régime, tranche d'âge, phase du cycle, marqueurs de conditions validées) à Anthropic via notre backend dans l'UE, sous contrat de non-conservation. Nous ne relions jamais ces signaux à votre identité dans notre pool de recettes — ce que vous avez vu n'est suivi que sur votre appareil.
🔒 Chiffrement (KEK/DEK)
Toutes les données de santé (cycle, symptômes, humeurs, TB, journal, activité sexuelle) sont chiffrées en AES-256 sur l'appareil avec une clé de chiffrement de données (DEK) aléatoire
La DEK est protégée par une clé de chiffrement de clé (KEK) dérivée de votre mot de passe via PBKDF2
Mode standard : récupération du mot de passe possible via un secret de séquestre conservé côté serveur
Mode Confidentialité maximale (prévu) : vous seul détenez la clé — aucune récupération
📊 Données que nous traitons
Stockées chiffrées (illisibles pour nous — catégorie particulière au titre de l'art. 9 RGPD) :
Pour les fonctionnalités qui nécessitent l'IA — conseils nutritionnels quotidiens, suggestions de recettes, la coach nutrition Sofía — nous ne pouvons pas garder les entrées chiffrées au moment de la génération, car le fournisseur d'IA doit les lire pour rédiger une réponse personnalisée. Nous minimisons ce qui quitte votre appareil et ce que nous conservons côté serveur :
Catégoriel uniquement. Nous envoyons la catégorie de régime (« vegan », « pescetarien »), la tranche d'âge, la phase du cycle, des indicateurs de conditions validés (issus d'une liste fermée), le niveau d'activité, la préférence de cuisine régionale. Nous n'envoyons pas : votre nom, votre e-mail, votre date de naissance exacte, votre poids ou taille exacts, le texte brut du journal, les noms de médicaments ou l'identifiant utilisateur.
Transitoire, non-conservation. Les appels à Anthropic Claude se font sous conditions Enterprise de non-conservation — Anthropic ne stocke pas nos requêtes et ne s'entraîne pas dessus.
Pool de recettes anonyme. Lorsque nous mettons en cache une recette générée pour réutilisation par d'autres utilisateurs, nous la stockons sous un hash HMAC de bucket (calculé avec un secret côté serveur) — jamais sous votre identifiant utilisateur. L'ensemble des recettes que vous avez vues n'est suivi que dans la base de données locale de votre appareil, envoyé à notre backend sous forme de filtre de Bloom opaque qui permet au serveur d'ignorer les entrées déjà vues sans savoir quels identifiants vous détenez.
Routage dans l'UE. Votre appareil ne contacte jamais directement un fournisseur d'IA — chaque appel transite par notre backend à Falkenstein, en Allemagne.
🤖 Tiers & API externes
Anthropic Claude (États-Unis, sous conditions Enterprise de non-conservation) : réponses d'IA pour la coach nutrition + conseils quotidiens + textes de recettes. Ne voit que les signaux catégoriels listés ci-dessus pendant la durée de la réponse, pas au-delà.
OpenAI DALL-E + Pexels (États-Unis) : images de recettes. Seul le titre de la recette (une courte expression comme « salmon avocado omelet ») est envoyé ; la clé de cache de notre côté est hachée, de sorte que le titre en clair n'est pas conservé à côté de l'URL de l'image. Aucune donnée personnelle ou de santé.
Sentry (Allemagne / UE) : rapports de plantage et journaux de diagnostic. Reçoit les traces de pile, le modèle d'appareil, la version de l'OS et votre identifiant utilisateur Supabase pour l'attribution des plantages. Ne reçoit aucune donnée de cycle, de symptôme, de journal ou autre donnée de santé ; les charges utiles contenant des marqueurs sensibles connus sont supprimées avant l'envoi.
OpenStreetMap Nominatim (UE) : autocomplétion de ville dans le champ de résidence (fonctionnalité Premium). Ne reçoit que la chaîne de recherche que vous saisissez ; jamais votre identité.
Apple HealthKit (iOS uniquement, opt-in) : lit les enregistrements de flux menstruel que vous avez déjà saisis dans Apple Santé, avec votre autorisation explicite.
📱 Health Connect (Android)
Luna v1.0 sur Android ne s'intègre pas à Google Health Connect. Aucune autorisation android.permission.health.* n'est demandée. Les versions futures pourront proposer l'import Health Connect en option.
⚖️ Base légale (RGPD)
Art. 6(1)(a) : Consentement — pour le coaching IA, les suggestions de recettes et l'autocomplétion de ville
Art. 6(1)(b) : Exécution du contrat — pour le suivi du cycle et les fonctions principales
Art. 9(2)(a) : Consentement explicite — pour les données de santé (catégorie particulière)
Art. 6(1)(f) : Intérêt légitime — rapports de plantage (avec droit d'opposition)
Base de données : Supabase, Francfort, Allemagne (UE)
Toutes les données des utilisateurs restent dans l'UE. Aucun transfert vers des pays tiers (les appels d'IA externes sont dé-identifiés avant de quitter l'UE).
🛡️ Données biométriques
Face ID / Touch ID / biométrie Android sont traités uniquement en local sur votre appareil
Nous ne stockons aucune donnée biométrique
Le jeton de déverrouillage mis en cache réside dans le Trousseau iOS / Android Keystore (protégé par le matériel)
❌ Ce que nous ne faisons pas
Pas de publicité, pas de traceurs publicitaires, pas d'analyse comportementale
Pas de vente de données, pas de partage avec des courtiers
Pas d'algorithmes de profilage (les prédictions sont calculées sur l'appareil à partir de votre propre historique)
✅ Vos droits (RGPD)
Art. 15 : Accès → Réglages > Télécharger les données
Art. 16 : Rectification → modifier le profil à tout moment
Art. 17 : Effacement → Réglages > Supprimer le compte (immédiat, irréversible)
Art. 20 : Portabilité des données → export JSON de toutes les données
Art. 7(3) : Retrait du consentement → possible à tout moment
Luna FemTech · privacy@luna-femtech.com
Società operatrice: icoso consulting S.L., Santander, Spagna (UE)
🎯 Breve e onesto
Luna è un'app FemTech privacy-first. Il tuo ciclo, il tuo diario e i campi del profilo sono cifrati in AES-256 sul tuo dispositivo prima di raggiungere il nostro database — memorizziamo testo cifrato e non possiamo leggere quei campi. La personalizzazione tramite IA (suggerimenti di ricette + consigli giornalieri) non è cifrata al momento della generazione: inviamo segnali categoriali (categoria di dieta, fascia d'età, fase del ciclo, marcatori di condizioni validate) ad Anthropic tramite il nostro backend nell'UE, con contratto di non conservazione. Non colleghiamo mai questi segnali alla tua identità nel nostro pool di ricette — ciò che hai visto è tracciato solo sul tuo dispositivo.
🔒 Crittografia (KEK/DEK)
Tutti i dati sanitari (ciclo, sintomi, umore, TB, diario, attività sessuale) sono cifrati in AES-256 sul dispositivo con una chiave di cifratura dei dati (DEK) casuale
La DEK è protetta da una Key Encryption Key (KEK) derivata dalla tua password tramite PBKDF2
Modalità standard: recupero della password possibile tramite segreto di deposito conservato sul server
Modalità Massima privacy (prevista): solo tu detieni la chiave — nessun recupero
📊 Dati che trattiamo
Memorizzati cifrati (illeggibili per noi — categoria particolare ai sensi dell'art. 9 RGPD):
Dati del ciclo, registrazioni delle mestruazioni, sintomi, umore, temperatura basale, muco cervicale, test di ovulazione, attività sessuale
Voci del diario (testo libero)
Previsioni del ciclo tramite IA
Memorizzati non cifrati (necessari al funzionamento del servizio):
Indirizzo e-mail (accesso, Supabase Auth)
Post della community (intenzionalmente pubblici / anonimi)
Impostazioni dell'app (lingua, combinazione di colori)
Stato dell'abbonamento (livello, scadenza)
🤖 Come funziona la personalizzazione tramite IA
Per le funzioni che richiedono l'IA — consigli nutrizionali giornalieri, suggerimenti di ricette, la coach nutrizionale Sofía — non possiamo mantenere cifrati gli input al momento della generazione, perché il fornitore di IA deve leggerli per scrivere una risposta personalizzata. Riduciamo al minimo ciò che lascia il tuo dispositivo e ciò che conserviamo sul server:
Solo categoriale. Inviamo categoria di dieta (« vegan », « pescetariano »), fascia d'età, fase del ciclo, indicatori di condizioni validate (da una lista chiusa), livello di attività, preferenza di cucina regionale. Non inviamo: il tuo nome, la tua e-mail, la data di nascita esatta, il peso o l'altezza esatti, il testo grezzo del diario, i nomi dei farmaci o l'ID utente.
Transitorio, non conservazione. Le chiamate ad Anthropic Claude avvengono in regime Enterprise di non conservazione — Anthropic non memorizza le nostre richieste né le usa per l'addestramento.
Pool di ricette anonimo. Quando memorizziamo nella cache una ricetta generata per il riutilizzo da parte di altri utenti, la salviamo sotto un hash HMAC di bucket (calcolato con un segreto lato server) — mai sotto il tuo ID utente. L'insieme delle ricette che hai visto è tracciato solo nel database locale del tuo dispositivo e inviato al nostro backend come filtro di Bloom opaco che consente al server di saltare le voci già viste senza sapere quali ID possiedi.
Instradato nell'UE. Il tuo dispositivo non contatta mai direttamente un fornitore di IA — ogni chiamata passa attraverso il nostro backend a Falkenstein, in Germania.
🤖 Terze parti & API esterne
Anthropic Claude (USA, in regime Enterprise di non conservazione): risposte di IA per la coach nutrizionale + consigli giornalieri + testi delle ricette. Vede solo i segnali categoriali elencati sopra per la durata della risposta, non oltre.
OpenAI DALL-E + Pexels (USA): immagini delle ricette. Viene inviato solo il titolo della ricetta (una breve frase come « salmon avocado omelet »); la chiave di cache dal nostro lato è sottoposta ad hashing, così il titolo in chiaro non viene conservato accanto all'URL dell'immagine. Nessun dato personale o sanitario.
Sentry (Germania / UE): segnalazione di crash e log diagnostici. Riceve stack trace, modello del dispositivo, versione del sistema operativo e il tuo ID utente Supabase per l'attribuzione dei crash. Non riceve dati di ciclo, sintomi, diario o altri dati sanitari; i payload con marcatori sensibili noti vengono scartati prima del caricamento.
OpenStreetMap Nominatim (UE): completamento automatico della città nel campo di residenza (funzione Premium). Riceve solo la stringa di ricerca che digiti; mai la tua identità.
Apple HealthKit (solo iOS, opt-in): legge le registrazioni del flusso mestruale che hai già inserito in Apple Salute, con il tuo consenso esplicito.
📱 Health Connect (Android)
Luna v1.0 su Android non si integra con Google Health Connect. Non vengono richieste autorizzazioni android.permission.health.*. Le versioni future potrebbero offrire l'importazione da Health Connect come funzione opzionale.
⚖️ Base giuridica (RGPD)
Art. 6(1)(a): Consenso — per il coaching IA, i suggerimenti di ricette e il completamento automatico della città
Art. 6(1)(b): Esecuzione del contratto — per il monitoraggio del ciclo e le funzioni principali
Art. 9(2)(a): Consenso esplicito — per i dati sanitari (categoria particolare)
Art. 6(1)(f): Legittimo interesse — segnalazione di crash (con diritto di opposizione)
🌍 Infrastruttura
Backend: Hetzner Cloud, Falkenstein, Germania (UE)
Database: Supabase, Francoforte, Germania (UE)
Tutti i dati degli utenti restano nell'UE. Nessun trasferimento verso paesi terzi (le chiamate di IA esterne sono de-identificate prima di lasciare l'UE).
🛡️ Dati biometrici
Face ID / Touch ID / biometria Android sono elaborati esclusivamente in locale sul tuo dispositivo
Non memorizziamo alcun dato biometrico
Il token di sblocco memorizzato nella cache risiede nel Portachiavi iOS / Android Keystore (protetto dall'hardware)
Luna FemTech · privacy@luna-femtech.com
Empresa operadora: icoso consulting S.L., Santander, Espanha (UE)
🎯 Breve e honesto
A Luna é uma app FemTech privacy-first. O teu ciclo, o teu diário e os campos do perfil são encriptados em AES-256 no teu dispositivo antes de chegarem à nossa base de dados — armazenamos texto cifrado e não conseguimos ler esses campos. A personalização por IA (sugestões de receitas + dicas diárias) não está encriptada no momento da geração: enviamos sinais categóricos (categoria de dieta, faixa etária, fase do ciclo, marcadores de condições validadas) à Anthropic através do nosso backend na UE, ao abrigo de um contrato de não conservação. Nunca associamos esses sinais à tua identidade no nosso pool de receitas — o que viste é registado apenas no teu dispositivo.
🔒 Encriptação (KEK/DEK)
Todos os dados de saúde (ciclo, sintomas, humor, TB, diário, atividade sexual) são encriptados em AES-256 no dispositivo com uma chave de encriptação de dados (DEK) aleatória
A DEK é protegida por uma Key Encryption Key (KEK) derivada da tua palavra-passe via PBKDF2
Modo padrão: recuperação de palavra-passe possível através de segredo de custódia mantido no servidor
Modo Privacidade Máxima (planeado): só tu tens a chave — sem recuperação
📊 Dados que tratamos
Armazenados encriptados (ilegíveis para nós — categoria especial nos termos do art. 9.º RGPD):
Dados do ciclo, registos de menstruação, sintomas, humor, temperatura basal, muco cervical, testes de ovulação, atividade sexual
Entradas do diário (texto livre)
Previsões do ciclo por IA
Armazenados sem encriptação (necessários ao funcionamento do serviço):
Endereço de e-mail (início de sessão, Supabase Auth)
Publicações da comunidade (intencionalmente públicas / anónimas)
Definições da app (idioma, esquema de cores)
Estado da subscrição (nível, validade)
🤖 Como funciona a personalização por IA
Para as funcionalidades que precisam de IA — dicas nutricionais diárias, sugestões de receitas, a coach de nutrição Sofía — não conseguimos manter as entradas encriptadas no momento da geração, porque o fornecedor de IA precisa de as ler para escrever uma resposta personalizada. Minimizamos o que sai do teu dispositivo e o que retemos no servidor:
Apenas categórico. Enviamos categoria de dieta (« vegan », « pescetariano »), faixa etária, fase do ciclo, marcadores de condições validados (de uma lista fechada), nível de atividade, preferência de cozinha regional. Não enviamos: o teu nome, o teu e-mail, a data de nascimento exata, o peso ou altura exatos, o texto em bruto do diário, nomes de medicamentos ou ID de utilizador.
Transitório, não conservação. As chamadas à Anthropic Claude decorrem ao abrigo de termos Enterprise de não conservação — a Anthropic não armazena os nossos pedidos nem os usa para treino.
Pool de receitas anónimo. Quando colocamos em cache uma receita gerada para reutilização por outros utilizadores, armazenamo-la sob um hash HMAC de bucket (calculado com um segredo do lado do servidor) — nunca sob o teu ID de utilizador. O conjunto de receitas que viste é registado apenas na base de dados local do teu dispositivo e enviado ao nosso backend como um filtro de Bloom opaco que permite ao servidor ignorar as entradas já vistas sem saber que IDs possuis.
Encaminhado pela UE. O teu dispositivo nunca contacta diretamente um fornecedor de IA — cada chamada passa pelo nosso backend em Falkenstein, na Alemanha.
🤖 Terceiros & APIs externas
Anthropic Claude (EUA, ao abrigo de termos Enterprise de não conservação): respostas de IA para a coach de nutrição + dicas diárias + textos de receitas. Vê apenas os sinais categóricos listados acima durante a resposta, não depois.
OpenAI DALL-E + Pexels (EUA): imagens de receitas. É enviado apenas o título da receita (uma frase curta como « salmon avocado omelet »); a chave de cache do nosso lado é submetida a hash, pelo que o título em texto simples não é retido junto ao URL da imagem. Sem dados pessoais ou de saúde.
Sentry (Alemanha / UE): relatórios de falhas e registos de diagnóstico. Recebe rastreios de pilha, modelo do dispositivo, versão do SO e o teu ID de utilizador Supabase para atribuição de falhas. Não recebe dados de ciclo, sintomas, diário ou outros dados de saúde; as cargas com marcadores sensíveis conhecidos são descartadas antes do envio.
OpenStreetMap Nominatim (UE): preenchimento automático de cidade no campo de residência (funcionalidade Premium). Recebe apenas o texto de pesquisa que escreves; nunca a tua identidade.
Apple HealthKit (apenas iOS, opt-in): lê registos de fluxo menstrual que já tenhas inserido no Apple Saúde, com a tua autorização explícita.
📱 Health Connect (Android)
A Luna v1.0 em Android não se integra com o Google Health Connect. Não são solicitadas permissões android.permission.health.*. Versões futuras poderão oferecer a importação do Health Connect como funcionalidade opcional.
⚖️ Base legal (RGPD)
Art. 6.º(1)(a): Consentimento — para coaching de IA, sugestões de receitas e preenchimento automático de cidade
Art. 6.º(1)(b): Execução do contrato — para o acompanhamento do ciclo e as funções principais
Art. 9.º(2)(a): Consentimento explícito — para dados de saúde (categoria especial)
Art. 6.º(1)(f): Interesse legítimo — relatórios de falhas (com direito de oposição)
Todos os dados dos utilizadores permanecem na UE. Sem transferência para países terceiros (as chamadas de IA externa são desidentificadas antes de saírem da UE).
🛡️ Dados biométricos
Face ID / Touch ID / biometria Android são processados exclusivamente localmente no teu dispositivo
Não armazenamos quaisquer dados biométricos
O token de desbloqueio em cache reside no Porta-chaves iOS / Android Keystore (protegido por hardware)
❌ O que não fazemos
Sem publicidade, sem rastreadores publicitários, sem analítica comportamental
Sem venda de dados, sem partilha com corretores
Sem algoritmos de perfilagem (as previsões são calculadas no dispositivo a partir do teu próprio histórico)
✅ Os teus direitos (RGPD)
Art. 15.º: Acesso → Definições > Descarregar dados
Art. 16.º: Retificação → editar o perfil a qualquer momento
Art. 17.º: Apagamento → Definições > Eliminar conta (imediato, irreversível)
Art. 20.º: Portabilidade dos dados → exportação JSON de todos os dados
Art. 7.º(3): Retirada do consentimento → possível a qualquer momento