
Atención a este caso.
Son las 10 de la mañana de primeros de mes.
El controller tiene el export del ERP abierto en Excel: 847 filas, 23 centros de coste, variaciones de actuals vs. budget para cuatro áreas de negocio.
Su trabajo hasta el día 8: revisar cada línea, calcular las desviaciones significativas, y redactar el comentario ejecutivo para el board pack.
Solo.
Tres días de trabajo analítico que en el fondo es trabajo mecánico: leer números, calcular diferencias, escribir frases del tipo "El centro de coste Marketing presenta una desviación desfavorable de $42.300 (+18,2%) respecto al budget, explicada principalmente por el incremento en inversión publicitaria digital durante el período."
Multiplica eso por 23 centros de coste.
Y luego el CFO te pide que lo tengas listo "para el martes, si puede ser."
El dolor del cierre mensual
El análisis de variaciones es la columna vertebral del reporting mensual.
Y también es, en gran medida, una tarea repetitiva.
No porque no requiera criterio. Lo requiere. Pero el 80% del trabajo es mecánico: parsear datos, calcular diferencias absolutas y porcentuales, identificar las desviaciones que superan el umbral de materialidad, y redactar la explicación en el formato que pide el CFO o el board.
El problema no es que sea difícil.
El problema es que consume tiempo que el controller debería dedicar a otra cosa: interpretar las causas reales de las desviaciones, conversar con los responsables de cada área, recomendar ajustes al forecast.
Esto tiene solución. Y no requiere saber programar.

Controlling financiero con Claude Code
Antes de entrar en el caso práctico, una aclaración importante.
Cuando la mayoría de la gente habla de usar IA en finanzas, habla de hacer preguntas a ChatGPT en una ventana de chat.
Como ya hemos hablado muchas veces en esta newsletter, Claude Code es diferente.
Es un agente de IA que escribe código, lo ejecuta, lee los resultados, corrige errores y vuelve a iterar — todo dentro de una terminal, conectado directamente a tus archivos.
La diferencia práctica para un controller:
ChatGPT: le describes el problema, te da código que tienes que copiar, pegar, ejecutar tú, depurar si falla, volver a preguntar.
Claude Code: le dices lo que quieres hacer en lenguaje natural, escribe el script, lo ejecuta sobre tu archivo real, te muestra el output, y corrige solo si hay errores. Tú no tocas código.
Es la diferencia entre tener un consultor que te da un plano y tener un constructor que te levanta la casa.
Las 3 iteraciones: de CSV a board-ready en una tarde
Volvamos al controller del día 3.
Tiene su export del ERP: un CSV con columnas cost_center, account, actual_eur, budget_eur, period. No ha escrito una línea de Python en su vida.
Abre Claude Code. Y empieza.
Iteración 1: parsear y estructurar los datos
Lee el archivo erp_export_marzo2026.csv y dame una tabla con
actuals vs. budget agrupados por cost_center. Muestra los
totales por área y el total general.
Claude Code lee el CSV, identifica las columnas relevantes, agrupa por centro de coste, calcula subtotales y total general.
El output: una tabla limpia en terminal. El controller la revisa. Hay un centro de coste que aparece duplicado por un error de codificación en el ERP.
Le dice a Claude Code: "El cost center 1042 aparece duplicado como 1042A y 1042B, consolídalos."
Claude Code corrige y recalcula. Primer bloque resuelto: 20 minutos.
Iteración 2: calcular y ordenar variaciones
Calcula la variación absoluta (actual - budget) y la variación
porcentual para cada cost_center. Ordénalos de mayor a menor
desviación en valor absoluto. Marca como significativos los que
superen el 10% de desviación O más de €25.000 en valor absoluto.
Claude Code ejecuta el cálculo, añade columnas de variación, aplica los criterios de materialidad, y devuelve la tabla ordenada.
Resultado: 7 centros de coste marcados como significativos. El controller ajusta el umbral a $20.000 para capturar uno más que sabe que el CFO va a preguntar. Segunda iteración: 15 minutos.
Iteración 3: redactar el comentario ejecutivo
Esta es la iteración que cambia todo.
Para cada cost_center marcado como significativo, redacta un
comentario ejecutivo de máximo 3 frases con este formato:
"[NOMBRE_ÁREA] presenta una desviación [favorable/desfavorable] de €[IMPORTE] ([PORCENTAJE]%) respecto al presupuesto del período. [CAUSA PRINCIPAL — basada en el nombre de la cuenta con mayor variación]. [IMPLICACIÓN O CONTEXTO — si la variación es puntual o sostenida, basándote en el patrón de los datos]."
Contexto del período: marzo 2026, Q1 de cierre. El área de Marketing incrementó inversión por lanzamiento de producto Q2. Operaciones tiene sobrecoste en logística por retraso de proveedor confirmado en enero.
Claude Code genera 8 comentarios ejecutivos. El controller ajusta el tono de dos. Tercera iteración: 25 minutos.
Tiempo total: menos de 2 horas. El board pack está listo para revisión del CFO.
┌──────────────────────────────────────────────────────────────────┐
│ CONTROLLING CON CLAUDE CODE — FLUJO COMPLETO │
├──────────────────────────────────────────────────────────────────┤
│ │
│ ERP EXPORT (CSV) │
│ 847 filas · 23 cost centers · actuals + budget │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ ITERACIÓN 1 │ ← "parsea el CSV y dame actuals │
│ │ Parseo + Estructura│ vs. budget por cost center" │
│ │ ~20 min │ │
│ └─────────┬───────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ ITERACIÓN 2 │ ← "calcula variaciones, ordénalas │
│ │ Variaciones + │ por desviación, marca significativas" │
│ │ Materialidad │ │
│ │ ~15 min │ │
│ └─────────┬───────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ ITERACIÓN 3 │ ← "redacta el comentario ejecutivo │
│ │ Narrativa Board │ de cada variación significativa │
│ │ ~25 min │ en este formato board" │
│ └─────────┬───────────
Para cada cost_center marcado como significativo en el análisis, redacta un comentario ejecutivo con este formato exacto:
"[NOMBRE_ÁREA] presenta una desviación [favorable/desfavorable]
de €[ACTUAL] ([PORCENTAJE]%) respecto al budget del período.
[CAUSA PRINCIPAL basada en las partidas con mayor variación].
[CONTEXTO: si la desviación es puntual o refleja una tendencia]."
Variables de contexto del mes:
- Período: [CONTEXTO_DEL_MES]
- Umbral de materialidad: [UMBRAL] en valor absoluto o [UMBRAL]%
- Formato preferido del board: [FORMATO_EMPRESA]
- Partidas a excluir del análisis: [EXCLUSIONES si las hay]
Reglas de estilo:
- Máximo 3 frases por comentario
- Tono ejecutivo, sin adjetivos innecesarios
- Si no hay causa clara en los datos, indícalo explícitamente
en lugar de especular
- Variaciones favorables = actual < budget en costes,
actual > budget en ingresos
Ejemplo de output real
ANTES — proceso manual:
Cost center: MKT-Digital Actual: $274.300 / Budget: $232.000 / Variación: +$42.300 (+18,2%) Comentario: Desviación desfavorable en Marketing Digital. [sin terminar — pendiente de completar con contexto]
──────────────────────────────────────────────────────────
DESPUÉS — Claude Code, iteración 3:
Marketing Digital presenta una desviación desfavorable de $42.300 (+18,2%) respecto al presupuesto del período. La variación se concentra en las partidas de paid media (+$28.400) y producción de contenido (+$13.900), consistente con el incremento de inversión aprobado para el lanzamiento de producto previsto en Q2. La desviación es puntual y no refleja un patrón de sobrecoste estructural en el área.
Multiplica por 8 áreas significativas. Ahí está la diferencia.
El workflow n8n orquesta todo el proceso de forma mensual:
```json
{
"name": "DCF — Controlling Automático con Claude Code",
"nodes": [
{
"name": "Trigger mensual día 3",
"type": "n8n-nodes-base.scheduleTrigger",
"parameters": {
"rule": {
"interval": [{ "field": "cronExpression", "expression": "0 8 3 * *" }]
}
}
},
{
"name": "Descargar export ERP desde Drive",
"type": "n8n-nodes-base.googleDrive",
"parameters": {
"operation": "download",
"fileId": "={{ $vars.ERP_EXPORT_FILE_ID }}"
}
},
{
"name": "Ejecutar análisis Claude Code",
"type": "n8n-nodes-base.executeCommand",
"parameters": {
"command": "cd /finance/controlling && python3 variance_analysis.py --input /tmp/erp_export.csv --umbral-absoluto {{ $vars.UMBRAL_ABSOLUTO }} --umbral-pct {{ $vars.UMBRAL_PORCENTUAL }} --contexto '{{ $vars.CONTEXTO_MES }}' --output /tmp/variance_commentary.json"
}
},
{
"name": "Subir comentario a Google Docs",
"type": "n8n-nodes-base.googleDocs",
"parameters": {
"operation": "update",
"documentId": "={{ $vars.BOARD_PACK_DOC_ID }}",
"actionsUi": {
"actionFields": [{
"action": "replaceText",
"text": "{{VARIANCE_COMMENTARY_PLACEHOLDER}}",
"replaceText": "={{ $json.commentary }}"
}]
}
}
},
{
"name": "Notificar al CFO",
"type": "n8n-nodes-base.gmail",
"parameters": {
"operation": "send",
"to": "={{ $vars.CFO_EMAIL }}",
"subject": "Board pack listo — análisis de variaciones marzo 2026",
"message": "El análisis de variaciones está disponible en Google Docs. {{ $json.summary }}"
}
}
]
}
Variables de entorno para configurar en n8n:
Variable | Descripción |
|---|---|
| ID carpeta Drive donde el ERP deposita el export |
| Importe mínimo para marcar variación significativa (ej: |
| Porcentaje mínimo (ej: |
| Texto libre con eventos del período |
| Email del CFO para la notificación |
El resultado real: antes vs. después
Sin Claude Code | Con Claude Code |
|---|---|
Días 1-3: parseo manual en Excel | Día 1, mañana: análisis completo en Google Docs |
Cálculo manual de variaciones por fila | Script automático con criterios de materialidad |
Comentarios escritos desde cero | 8 comentarios ejecutivos en 25 minutos |
Formato variable según el día | Formato consistente para el board |
CFO recibe el análisis el día 4 o 5 | CFO recibe el análisis el día 2 |
Controller sin tiempo para interpretar causas | Controller con 3 días para análisis real |
Con 3 días recuperados, el controller puede hablar con los responsables de área antes de que las variaciones lleguen al board. Puede detectar patrones que el script no ve: el área de Ventas lleva tres meses con sobrecoste en viajes porque el proceso de aprobación está roto. Eso no sale en una variación mensual aislada. Sale en la conversación que el controller ahora tiene tiempo de tener.
Claude Code no es una herramienta para developers.
Es una herramienta para cualquier profesional con un problema que tiene estructura: datos de entrada conocidos, lógica de procesamiento repetible, formato de output definido.
El controlling mensual encaja perfectamente.
No necesitas saber Python. No necesitas entender APIs. Necesitas saber describir tu problema con precisión — y eso, un controller que lleva años haciendo la misma tarea, lo sabe hacer mejor que cualquier developer.
La herramienta está disponible. El caso de uso está demostrado.
¿Quieres aprender a hacer workflows como este?
Ultimas plazas para el programa AI CFO Fractional
Este es exactamente el tipo de infraestructura que construimos en el programa AI Fractional CFO de Próximo: agentes de IA para tesorería, reporting, FP&A y due diligence, implementados junto a tu equipo en 30 días.
El programa cambia de fecha al 15 de Abril. Últimas plazas disponibles.
