legal

Política de Privacidad

Versión 2.0 — Mayo 2026

// qué datos procesamos

El sistema gestiona turnos médicos a través de WhatsApp. Para funcionar, procesa los mensajes entrantes en tiempo real. A continuación se detalla qué se procesa, dónde y por cuánto tiempo.

Dato Uso Se persiste en disco
Número de teléfono Identificar al usuario y enviarle respuestas vía WhatsApp No — solo en sesión Redis (TTL 30 min)
Texto del mensaje Detección de intención (NLU con spaCy) Sí, pero sanitizado — ver sección de almacenamiento
Intención detectada Dirigir el flujo conversacional Sí, como texto del tipo "search_professional"
Entidades del mensaje Filtros de búsqueda (especialidad, fecha, zona) Sí, sanitizadas — sin nombres ni teléfonos

El número de teléfono del paciente solo existe en memoria durante el procesamiento del request y en la sesión Redis activa. Una vez expirada la sesión (30 minutos de inactividad), desaparece automáticamente.

// almacenamiento y retención

Desde la versión 2.0 del sistema, la anonimización ocurre en el punto de entrada — antes de que cualquier dato toque el disco. El texto que se persiste no es el mensaje original sino una versión con la información personal reemplazada.

Componente Qué guarda Retención
Sesión Redis Estado de conversación activa, entidades acumuladas 30 min · automático
Base de datos SQLite Turnos, profesionales, clientes registrados Mientras sea operacional
Eventos de conversación Tipo de acción (reserva, cancelación), intención detectada — sin texto ni teléfono 7 días · automático
Logs ML (JSONL) Mensaje sanitizado + intención + confianza — sin identificador de usuario 60 días · script automático
CSVs rechazados Registros de importación fallida 30 días · script automático

Los logs JSONL utilizados para mejorar el detector de intenciones no contienen identificador de usuario desde la v2.0. El campo user_id fue eliminado del esquema de logging. No es posible vincular una línea del log con un paciente específico.

// qué no guardamos

Esto es explícito porque genera dudas frecuentes:

  • El número de teléfono del paciente no se guarda en los logs de ML ni en los logs del sistema.
  • El texto del mensaje no se guarda en su forma original — se reemplaza la información personal antes de persistir.
  • Teléfonos mencionados dentro del texto son reemplazados por [TEL].
  • Números de documento (DNI, CUIL, CUIT) detectados en el texto son reemplazados por [DNI].
  • Nombres de profesionales en las entidades detectadas son reemplazados por [PROFESIONAL].
  • Las sesiones de Redis no se respaldan en ningún almacenamiento secundario.
  • No utilizamos cookies de seguimiento ni sistemas de analytics externos.

// terceros involucrados

El funcionamiento del servicio involucra a los siguientes terceros como procesadores de datos o proveedores de infraestructura:

Proveedor Rol Política de privacidad
Twilio Proveedor de WhatsApp API — intermediario entre WhatsApp y el sistema twilio.com/en-us/legal/privacy
Meta Platforms Infraestructura de WhatsApp Business Platform — los mensajes transitan por servidores de Meta whatsapp.com/legal/privacy-policy
Google Google Calendar API — gestión de disponibilidad y agenda de los profesionales policies.google.com/privacy

El detector de intenciones (NLU) es un modelo propio entrenado con spaCy. No se utilizan servicios externos de procesamiento de lenguaje natural como OpenAI, Anthropic u otros proveedores de LLM.

"El uso de información recibida de Google Workspace APIs cumple con la Google API Services User Data Policy, incluyendo los requisitos de Limited Use."

El acceso a Google Calendar se realiza mediante Service Account con acceso exclusivo a los calendarios de los profesionales registrados. Los datos de calendario se usan únicamente para consultar disponibilidad y gestionar turnos. No se almacenan ni comparten con terceros.

// medidas de seguridad técnicas

  • Sanitización en punto de entrada: antes de persistir cualquier dato, el sistema reemplaza teléfonos, DNIs y nombres de profesionales con tokens genéricos ([TEL], [DNI], [PROFESIONAL]).
  • Validación de origen Twilio: cada webhook entrante verifica la firma HMAC-SHA1 de Twilio. Mensajes sin firma válida son rechazados con HTTP 403 antes de procesar.
  • Rate limiting: límite de mensajes por número de teléfono con ventana deslizante. Protección contra spam y abuso.
  • Sesiones con TTL: Redis con autenticación y TTL de 30 minutos. Puerto no expuesto al host — accesible solo dentro de la red Docker.
  • Aislamiento de datos: cada cliente solo puede ver y gestionar sus propios turnos.
  • Enmascaramiento en logs de sistema: los logs de consola enmascaran teléfonos antes de escribir (+5491112345678+549****5678).
  • Retención automática: scripts de limpieza eliminan logs ML a los 60 días y archivos CSV rechazados a los 30 días.

// tus derechos

Podés ejercer los siguientes derechos sobre tus datos personales escribiendo a contacto@gaxoblanco.com. Respondemos en un plazo máximo de 15 días hábiles.

  • Acceso: solicitar qué datos operacionales (turnos, perfil de cliente) están almacenados asociados a tu número.
  • Rectificación: corregir datos incorrectos en tu perfil o historial de turnos.
  • Eliminación: solicitar que se eliminen tus datos operacionales de la base de datos. Los logs ML no contienen identificador de usuario desde la v2.0, por lo que no es posible vincular líneas de log con un paciente específico.
  • Opt-out del bot: podés bloquear el número de WhatsApp en cualquier momento para dejar de recibir mensajes del sistema. No se requiere ninguna acción adicional de tu parte.

// contacto

Responsable del tratamiento: Gaston Blanco
CUIT: 20-37683831-6
Buenos Aires, Argentina
contacto@gaxoblanco.com

Para consultas sobre esta política, ejercicio de derechos o reportar un incidente de privacidad, escribir al correo indicado con asunto "Privacidad — [motivo]".