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.