NT

NutriTrack Pro — CCPA / CPRA Compliance

Plan de implementación técnico-legal · Generado por CULTIVA IA · Legal
No Cumplidor — Acción urgente
Evaluación: 15 junio 2026 · Revisión trimestral
NutriTrack Pro ESTÁ OBLIGADO a cumplir CCPA/CPRA

Ingresos anuales $32M superan el umbral de $25M. Con 18.000+ residentes de California y datos de salud sensibles compartidos con Meta Pixel, la exposición a multas es alta. Se requiere acción inmediata en 3 áreas críticas: DSR API, detección GPC y actualización de política de privacidad.

Estado general de cumplimiento
Puntuación compliance
18%
3 de 12 controles activos
Usuarios CA afectados
18K
de 120.000 usuarios totales
Exposición máx. a multas
$45M
$7.500 × violación intencional
Plazo crítico (opt-out)
24h
Implementar GPC middleware

⚖️ Derechos del consumidor CCPA/CPRA

Derecho Descripción Plazo
Conocimiento Qué datos recopilamos, con quién los compartimos 45 días
Eliminación Solicitar borrado de datos personales 45 días
Opt-Out Salir de la venta/compartición de datos Inmediato
Corrección Corregir información personal inexacta (CPRA) 45 días
Limitar SPI Limitar uso de información personal sensible Inmediato
Portabilidad Recibir datos en formato portable (JSON/CSV) 45 días
No discriminación Sin penalización por ejercer derechos Siempre

Checklist de implementación priorizado

  • Inventario de datos mapeadoTablas users, analytics_events, health_data identificadas Hecho
  • GPC Signal Middleware activoExpress.js: detectar cabecera Sec-GPC: 1 Alta
  • API DSR implementadaEndpoints POST /api/privacy/dsr + verificación de identidad Alta
  • Enlace "No vender mis datos" en footerRequerido en todas las páginas desde 2020 Alta
  • Política de privacidad actualizadaCon categorías CCPA y derechos explicados Media
  • Contratos con Meta, Mixpanel, SegmentCláusulas de restricción de datos (DPA) Media
  • Datos sensibles identificados (CPRA)Salud, biométricos, geolocalización marcados Hecho
  • ! Formulario DSR (web + teléfono)Canal por email activo; falta web form y toll-free Media
  • Revisión anual de privacidad programadaCon equipo legal y engineering Baja
Inventario de datos personales

🗄️ Mapeo de datos NutriTrack Pro — Clasificación CCPA

Tabla Campo Categoría CCPA ¿Sensible (CPRA)? ¿Se vende/comparte? Terceros Retención
users email, nombre Identificadores No No SendGrid, Stripe 3 años
users geolocation_precise Geolocalización ⚠ Sí Sí — Meta Meta Pixel, Segment 1 año
health_data peso, IMC, dieta Información de salud ⚠ Sí No 5 años
health_data biometrics_hash Datos biométricos ⚠ Sí No 3 años
analytics_events device_id, user_id Actividad de red No Sí — Mixpanel Mixpanel, Segment 1 año
orders purchase_history Info comercial No No Stripe 7 años
Código de referencia

🔒 GPC Signal Middleware — Express.js

JavaScript middleware/gpc.js
// Detecta señal GPC y aplica opt-out automático
const gpcMiddleware = (req, res, next) => {
  const gpcEnabled =
    req.headers['sec-gpc'] === '1';

  if (gpcEnabled) {
    req.privacyConsent = {
      optedOutOfSale: true,
      optedOutOfSharing: true,
      source: 'gpc_signal',
      detectedAt: new Date().toISOString()
    };

    if (req.user) {
      recordOptOut(req.user.id, 'gpc_signal');
    } else {
      res.cookie('ccpa_optout', '1', {
        maxAge: 365 * 24 * 3600 * 1000,
        httpOnly: true, secure: true,
        sameSite: 'Strict'
      });
    }

    // Propagar a terceros
    await Promise.all([
      mixpanel.optOut(req.user?.id),
      segment.suppress(req.user?.id),
      metaPixel.disable()
    ]);
  }
  next();
};

module.exports = { gpcMiddleware };

🔑 DSR API — FastAPI (Python)

Python api/privacy/dsr.py
@app.post("/api/privacy/dsr",
          response_model=DSRResponse)
async def submit_dsr(
    request: DSRRequest,
    background_tasks: BackgroundTasks
):
    request_id = str(uuid.uuid4())
    deadline = 1 if (
      request.type == DSRType.OPT_OUT
    ) else 45

    dsr = {
      "id": request_id,
      "type": request.request_type,
      "email": request.email,
      "status": "pending",
      "deadline_days": deadline,
      "submitted_at": datetime.utcnow()
    }
    await db.dsr_requests.insert(dsr)
    background_tasks.add_task(
      send_verification_email,
      request.email, request_id
    )
    return DSRResponse(
      request_id=request_id,
      status="pending_verification",
      deadline=f"{deadline} days"
    )

💰 Exposición a multas y riesgos

⚖️

Multas CCPA/CPRA — California AG

$2,500
por violación no intencional
$7,500
por violación intencional
Vectores de riesgo críticos
Meta Pixel con datos salud Crítico
Sin opt-out link en footer Crítico
Sin detección GPC Alto
Sin API DSR Alto
Política sin actualizar Medio
DPAs terceros Medio
Flujo señal GPC
🌐
Browser envía
Sec-GPC: 1
⚙️
Middleware
detecta señal
🚫
Opt-out
automático
📡
Propaga a
Mixpanel/Meta
🍪
Cookie
persistida 1 año

📅 Roadmap de implementación

  • Completado
    Auditoría inicial & inventario de datos
    Clasificación de campos por categoría CCPA y SPI
  • Semana 1 — Urgente
    GPC middleware (Express.js)
    Detectar Sec-GPC: 1, propagar opt-out a terceros
  • Semana 1 — Urgente
    Footer link "Do Not Sell or Share"
    Visible en todas las páginas, URL /privacy/opt-out
  • Semana 2
    API DSR con FastAPI
    6 endpoints: know, delete, correct, opt-out, limit, portability
  • Semana 2
    Formulario DSR web + teléfono
    Con verificación de identidad por email token
  • Semana 3
    Actualizar política de privacidad
    Disclosures completos, categorías, terceros, contacto
  • Semana 3
    DPAs con Meta, Mixpanel, Segment
    Restricciones de uso de datos de CA consumers
  • Semana 4
    Detener compartición de datos salud con Meta
    Revisar eventos de Meta Pixel, filtrar SPI
  • Mes 2
    Formación del equipo legal y CS
    Protocolo de gestión de solicitudes DSR
  • Trimestral
    Revisión anual de privacidad
    Actualización de política y re-auditoría de terceros
Información Personal Sensible (CPRA) — NutriTrack

🔐 Datos sensibles identificados — Protección adicional requerida

⚕️
Información de salud
Peso, IMC, dieta, condiciones médicas
Uso limitado
📍
Geolocalización precisa
GPS <1.852m, compartida con Meta ⚠️
Acción urgente
🧬
Datos biométricos
Hash biométrico para identificación
Monitorizar
💳
Info financiera
Credenciales de pago via Stripe
Controlado