El problema.
Luis dirige una distribuidora con más de 40 proveedores activos. Cada mes entran más de 120 facturas en formatos que no se parecen entre sí: PDFs escaneados con sellos a mano, fotos por WhatsApp de un albarán, adjuntos de email con tablas inventadas, papel físico que alguien escanea tarde. Una persona del equipo administrativo dedicaba casi toda su jornada a descargar cada archivo, renombrarlo con la convención interna, cotejar importes contra albaranes y meter los datos a mano en Holded.
El proceso era lento y propenso a errores. Un dígito mal transcrito, un IVA asignado al producto equivocado, o un proveedor al que le cambian la razón social y se cuela como duplicado: cualquiera de esos fallos aparecía días después en conciliación y tocaba rehacer el asiento. En pico de trimestre se acumulaban semanas de facturas sin procesar. Luis pagaba un salario entero por un trabajo repetitivo que ni siquiera salía bien del todo.
Tenía a una persona cualificada haciendo un trabajo que una máquina debería hacer. Lo peor: encima cometíamos errores que nos costaban dinero.
Qué construimos.
Captura multicanal
Un workflow de n8n escucha una casilla dedicada facturas@ y un número de WhatsApp Business. Cuando llega un adjunto con pinta de factura (PDF, imagen, documento), se descarga y se deposita en un bucket cifrado con TTL de 90 días. Antes de tocar nada ya tenemos trazabilidad de origen y timestamp.
Extracción con OCR + GPT-4o
Cada documento pasa por OCR y después por un prompt de extracción estructurada contra GPT-4o. Salen proveedor, CIF, número y fecha de factura, líneas de detalle con base imponible y tipo de IVA, total y forma de pago. El mismo prompt funciona con facturas en tabla, imágenes escaneadas de mala calidad o formatos irregulares. Si el OCR falla por calidad, el flow pide nueva captura al proveedor citando el asunto original.
Validación contra negocio
Antes de contabilizar nada, el flow cruza los datos con Holded: proveedor existente con el mismo CIF, factura no duplicada por número, importes cuadrados matemáticamente (base + IVA = total), IVA coherente con el catálogo de producto. Si hay anomalía, el flow no la mete: abre un ticket con la factura adjunta y el detalle del conflicto para revisión humana.
Contabilización automática
Las facturas que pasan validación se registran en Holded vía API, asignadas a la cuenta contable correcta y con el archivo original adjunto al asiento. Luis recibe un informe diario con un resumen de lo procesado, los KOs (si los hay) y los registros que han necesitado revisión.
Cómo lo implementamos.
Seguimos nuestras 5 fases estándar — ver proceso completo.
- Semana 1 · Descubrimiento + plan de ruta: sesión con el equipo administrativo. Mapeamos los 11 formatos de proveedor más frecuentes, documentamos reglas de negocio y cerramos propuesta con fee fijo. Quick win: empezar por los 5 proveedores que concentran el 70 % del volumen.
- Semana 2 · Desarrollo: construcción en staging sobre VPS dedicado. Conexión con Holded, WhatsApp Business y casilla
facturas@. - Semana 3 · Desarrollo con datos reales: entrenamiento de validación contra 600 facturas reales de los 3 meses anteriores. Ajustamos el prompt hasta que el ratio de errores fuera menor al del proceso manual.
- Semana 4 · Entrega y corte: 5 días de sombra en paralelo al proceso manual, luego sustitución. Sistema corriendo.
- Semanas 5-8 · Estabilización (4 semanas supervisadas): reuniones semanales con el equipo para revisar casos borde, ajustar validaciones con facturas raras que aparecieron sólo en uso real y afinar el umbral de confianza. Al cerrar las 4 semanas: producción 100 % autónoma.
- Producción: retainer de 4 h/mes para incorporar nuevos proveedores y evolución.
Stack utilizado.
n8nGPT-4oHolded APIWhatsApp BusinessGmail APITesseract OCRSentry