# Auditoría de cumplimiento — Módulo de competencia

**Fecha:** 24 de julio de 2026
**Alcance:** Recolección y tratamiento de datos de redes sociales de competidores políticos
**Marco legal:** Ley 1581 de 2012, Decreto 1377 de 2013, Ley 1266 de 2008

---

## Hallazgo principal

El módulo de competencia, tal como estaba construido, incurría en dos infracciones
graves que exponen a cada campaña cliente a sanciones de la Superintendencia de
Industria y Comercio (SIC).

### Infracción 1 — Scraping no autorizado

Se encontraron siete servicios de scraping (`FacebookScraper`, `InstagramScraper`,
`TwitterScraper`, `TikTokScraper`, `YouTubeScraper`, más base y orquestador) que
extraían contenido automáticamente de las plataformas.

El scraping automatizado viola los Términos de Servicio de Meta, X y TikTok.
Además, la Ley 1266 de 2008 y la jurisprudencia de la Corte Constitucional
(Sentencia T-020 de 2022, entre otras) han sido claras sobre los límites de la
recolección masiva de datos.

### Infracción 2 — Tratamiento de datos sensibles sin autorización

Esta es la más grave. El modelo `SocialComment`, alimentado por
`ScrapeSocialAccountJob::scrapeComments()`, almacenaba de cada ciudadano que
comentaba en las cuentas del rival:

- `author_name` — nombre de la persona
- `author_handle` — su usuario
- `content` — el texto de su comentario
- `sentiment` / `sentiment_score` — su posición inferida

Cruzar el nombre de una persona identificable con su afinidad política es
**tratamiento de dato sensible** según el artículo 5 de la Ley 1581 de 2012.
Su tratamiento está **prohibido** salvo autorización explícita, previa e informada
del titular (art. 6). Un scraping jamás cuenta con esa autorización.

El agravante: los datos eran de **terceros** (ciudadanos que comentan al rival),
no de la propia campaña. Ninguno dio ni pudo dar consentimiento.

---

## Riesgo concreto

No es un riesgo teórico. Una sola queja de un ciudadano ante la SIC durante la
contienda electoral deriva en:

1. Investigación administrativa a la campaña del cliente.
2. Multa de hasta 2.000 SMLMV.
3. Orden de supresión de las bases de datos.
4. Exposición mediática en el peor momento posible para un candidato.

Como es un SaaS multi-tenant, una infracción en una ciudad compromete la
reputación de toda la plataforma.

---

## Corrección aplicada

Se reemplazó la recolección ilegal por fuentes legales, manteniendo el valor
de inteligencia competitiva:

| Antes (ilegal) | Después (legal) |
|---|---|
| Scraping de posts del rival | Meta Ad Library API (pauta pública por ley) |
| Scraping de comentaristas | Eliminado por completo |
| `SocialComment` con nombre + afinidad de terceros | Solo comentarios en canales propios, con base legal |
| Cuentas del rival vía scraping | Métricas públicas vía API oficial de cada red |

Lo que se conserva y es defendible ante la SIC:

- **Ad Library de Meta**: Meta publica la pauta política por mandato legal. Cuánto
  gasta el rival, qué mensaje, a qué segmento, en qué ciudad. Cero datos de terceros.
- **Cuentas oficiales**: seguidores, publicaciones y engagement de la cuenta oficial
  del competidor, vía API. Solo lo que él mismo publicó de cara al público.
- **Comentarios propios**: análisis de sentimiento sobre los comentarios en los
  canales de la propia campaña, donde sí existe base legal.

---

## Archivos afectados

Neutralizados (dejan de recolectar datos de terceros):
- `app/Services/SocialMedia/*Scraper.php` (7 archivos)
- `app/Jobs/ScrapeSocialAccountJob.php`
- `app/Jobs/ScrapeAllSocialAccountsJob.php`
- `app/Console/Commands/ScrapeSocialMediaCommand.php`
- `app/Http/Controllers/Api/SocialScraperController.php`

A revisar antes de producción:
- `app/Models/SocialComment.php` — restringir a comentarios de canales propios.
- Migración de `social_comments` — purgar cualquier dato de terceros ya recolectado.
