Legal Cookies
Metodologia

Sistema de Clasificacion

Como Legal Cookies clasifica cookies, storage y requests usando una base de datos local e inteligencia artificial.

El sistema de clasificacion determina la categoria, nivel de riesgo y base legal de cada elemento detectado. Utiliza un enfoque hibrido en dos fases que combina velocidad (base de datos local) con adaptabilidad (clasificacion con IA).

Fase 1: Base de datos de cookies conocidas

La primera fase consulta una base de datos local con mas de 500 patrones conocidos. Esta base incluye:

Cookies conocidas

PatronServicioCategoria
_ga, _gid, _gatGoogle Analyticsanalytics
_fbp, _fbcFacebook Pixelmarketing
PHPSESSIDPHP Sessionstrictly_necessary
__cf_bmCloudflare Bot Managementstrictly_necessary
_gcl_*Google Ads Conversionmarketing
_hjid, _hjSession*Hotjaranalytics

Dominios de tracking conocidos

const KNOWN_TRACKING_DOMAINS = [
  'google-analytics.com',
  'googletagmanager.com',
  'doubleclick.net',
  'facebook.net',
  'connect.facebook.net',
  'bat.bing.net',
  'analytics.tiktok.com',
  // ... mas de 100 dominios
];

Beneficios de la base de datos local

BeneficioDescripcion
VelocidadClasificacion instantanea, sin latencia de red
Coste ceroNo consume tokens de IA
ConsistenciaMisma clasificacion para cookies identicas
ConfianzaBasada en documentacion oficial de los servicios

Fase 2: Clasificacion con IA

Los elementos no reconocidos en la base de datos local pasan a la segunda fase: clasificacion mediante un modelo de lenguaje (LLM) via OpenRouter.

Prompt especializado

El modelo recibe un prompt detallado que incluye:

  1. Marco legal completo: Directiva ePrivacy, RGPD, LOPDGDD, jurisprudencia TJUE
  2. Categorias definidas: Criterios exactos para cada categoria
  3. Ejemplos: Casos tipicos de cada clasificacion
  4. Instrucciones de formato: JSON estructurado con campos obligatorios

Informacion enviada al modelo

Para cada elemento, enviamos:

{
  "id": "cookie_0",
  "type": "cookie",
  "name": "_custom_tracking",
  "domain": ".example.com",
  "isThirdParty": false,
  "additionalInfo": {
    "path": "/",
    "httpOnly": false,
    "secure": true,
    "sameSite": "Lax",
    "hasExpiry": true
  }
}

Respuesta estructurada

El modelo devuelve una clasificacion estructurada:

{
  "id": "cookie_0",
  "category": "analytics",
  "riskLevel": "medium",
  "legalBasis": "consent_required",
  "regulatoryNote": "Art. 5.3 Directiva ePrivacy 2002/58/CE",
  "confidenceScore": 85,
  "requiresConsent": true,
  "explanation": "Cookie de analitica first-party...",
  "knownSource": null
}

Categorias de clasificacion

El sistema utiliza 5 categorias normalizadas alineadas con los estandares de la industria:

strictly_necessary

Cookies tecnicas esenciales para el funcionamiento del sitio.

EjemplosDescripcion
PHPSESSID, JSESSIONIDCookies de sesion del servidor
csrf_token, XSRF-TOKENProteccion contra CSRF
__cf_bm, cf_clearanceSeguridad/WAF de Cloudflare
cart_idCarrito de compra

Base legal: Exentas de consentimiento bajo Art. 5.3 ePrivacy

functional

Cookies que mejoran la funcionalidad pero no son estrictamente necesarias.

EjemplosDescripcion
language, localePreferencia de idioma
themePreferencia de tema claro/oscuro
recently_viewedProductos vistos recientemente

Base legal: Generalmente requieren consentimiento

analytics

Cookies de medicion y analisis de uso del sitio.

EjemplosDescripcion
_ga, _gidGoogle Analytics
_hjidHotjar
_clck, _clskMicrosoft Clarity

Base legal: Requieren consentimiento (excepcion Art. 22.2 LOPDGDD para analitica first-party propia)

marketing

Cookies de publicidad, perfilado y retargeting.

EjemplosDescripcion
_fbp, _fbcFacebook Pixel
_gcl_auGoogle Ads
_ttpTikTok Pixel

Base legal: Requieren consentimiento obligatorio

unknown

Elementos que no pueden clasificarse con certeza.

Tratamiento: Se asigna riskLevel segun el contexto:

  • First-party sin patron sospechoso → low
  • Third-party o nombre sospechoso → medium
  • Dominio de tracking conocido → high

Niveles de riesgo

Cada elemento recibe un nivel de riesgo que indica la gravedad potencial:

NivelSignificadoRequiere consentimiento
exemptExento por Art. 5.3 ePrivacyNo
lowBajo riesgo, impacto minimoTecnicamente si
mediumRiesgo moderadoSi
highAlto riesgo, tracking activoSi, obligatorio

Criterios de asignacion

exempt  → strictly_necessary
low     → functional first-party, analytics first-party propia
medium  → analytics third-party, functional third-party, unknown ambiguo
high    → marketing, tracking cross-site, scripts de terceros conocidos

El campo legalBasis indica la justificacion normativa:

ValorSignificado
strictly_necessaryExento bajo Art. 5.3 Directiva ePrivacy
consent_requiredRequiere consentimiento previo bajo RGPD/ePrivacy

Confianza de clasificacion

El campo confidenceScore (0-100) indica la certeza de la clasificacion:

RangoSignificado
90-100Cookie conocida en base de datos
70-89Alta confianza basada en patrones claros
50-69Confianza moderada, requiere verificacion
0-49Baja confianza, clasificacion tentativa

Las clasificaciones con confianza inferior a 70 se marcan para revision manual en el informe.

Notas regulatorias

Cada clasificacion incluye una regulatoryNote que cita la normativa especifica:

Ejemplos:

  • "Art. 5.3 Directiva ePrivacy 2002/58/CE - cookie de sesion exenta"
  • "Art. 6(1)(a) RGPD - requiere consentimiento para analitica de terceros"
  • "Art. 22.2 LOPDGDD - podria estar exenta si es analitica first-party propia sin cruce de datos"
  • "STJUE Planet49 (C-673/17) - cookies de tracking requieren consentimiento activo"

Procesamiento en lote

Para optimizar el uso de la IA, los elementos desconocidos se procesan en lote:

// Agrupar elementos desconocidos
const unknownItems = items.filter(i => !isKnown(i));

// Enviar en una sola peticion
const aiClassifications = await classifyWithAI(unknownItems);

// Combinar con clasificaciones locales
const allClassifications = [
  ...knownClassifications,
  ...aiClassifications
];

Esto reduce el numero de llamadas a la API y el coste total del analisis.