Análisis de campañas de marketing con IA

Un motor que convierte los datos de las campañas en un análisis escrito y permite seguir preguntando por chat.

Periodo
2025 – actualidad
Rol
Desarrollador de IA
Tipo
Desarrollo interno de ARKANA para su producto EMMA. El código es privado: aquí describo la arquitectura y mi aportación.
Stack
Python, FastAPI, OpenAI API, Redis, Pydantic

El problema

Quien gestiona campañas en EMMA tenía los datos, pero no su lectura. Para saber qué había cambiado de un periodo a otro había que comparar las métricas a mano, campaña por campaña. Hacía falta que la plataforma explicara el rendimiento en lenguaje natural y dejara profundizar sin salir de ella.

Qué hice yo

Diseñé e implementé el motor de análisis completo:

  • La recogida y la comparación de los datos de dos periodos.
  • La preparación de esos datos para el modelo y los prompts de cada tipo de análisis.
  • El chat sobre un análisis ya generado, con respuesta en streaming.
  • La API que lo expone al resto de la plataforma.

El despliegue a producción lo hizo el equipo.

Decisiones clave

Un núcleo común y secciones que se conectan a él

Cada sección de la plataforma que quiere análisis aporta tres piezas: de dónde salen sus datos, cómo se procesan y cómo se presentan al modelo. El núcleo no conoce ninguna sección concreta. Frente a escribir un análisis a medida para cada pantalla, esto permite añadir una sección sin tocar lo que ya funciona.

Calcular antes de preguntar al modelo

La comparación entre periodos y los rankings de campañas se calculan en código, y el modelo los recibe ya ordenados en Markdown. Un modelo de lenguaje redacta bien, pero no es fiable haciendo cuentas. Así las cifras del análisis son exactas y el modelo solo las interpreta.

El chat ve los datos, no solo el análisis

Al abrir el chat, el modelo recibe el análisis generado y los datos comparativos completos. Solo con el análisis no podría responder sobre una campaña que el texto no menciona. A cambio el contexto crece, así que el análisis inicial usa una versión reducida de los datos y el chat una más amplia.

Análisis guardados con caducidad

Cada análisis se guarda comprimido en Redis y caduca solo. Generarlo de nuevo en cada visita costaría otra llamada al modelo, y guardarlo de forma permanente sería conservar algo que deja de valer cuando cambian los datos.

Resultado

  • El análisis comparativo de dos periodos pasa de hacerse a mano a generarse solo, en español o en inglés.
  • El usuario puede preguntar por cualquier campaña desde el chat sin perder el contexto del análisis.
  • Dos secciones de la plataforma funcionan sobre el mismo motor, con un 85 % de código reutilizado.
  • El análisis de más de 500 campañas se genera en segundos.
  • Una sección nueva se implementa en días, no en semanas.