Workflows No-Code Que Realmente Funcionan en Producción — 7.000 Líneas de Motor de Ejecución
Gonzalo Monzón
Fundador & Arquitecto Principal
Todos hemos visto las demos de Zapier. Se ven geniales en un vídeo de 3 minutos. Pero cuando necesitas recuperación de errores, ramificación condicional basada en análisis IA, ejecución paralela, rate limiting y lógica de reintentos — la mayoría de herramientas no-code te dejan escribiendo código de todas formas. Decidimos construir un motor de workflows que maneje complejidad real de negocio, no ejemplos de juguete. El resultado: 7.073 líneas de motor de ejecución, 5.086 líneas de editor visual y 20+ tipos de nodo corriendo en producción en salud, viajes e inmobiliaria.
La Brecha de Producción de la Que Nadie Habla
La mayoría de herramientas no-code de workflows están diseñadas para triggers simples: "Cuando se envía un formulario, manda un email." Eso está bien para automatización básica. Pero los procesos de negocio reales se parecen más a esto:
- Llega un lead por webhook → IA puntúa urgencia e intención → si puntuación > 70, crear entrada en CRM Y enviar WhatsApp personalizado → esperar 24h → si no hay respuesta, la IA genera follow-up basándose en el contexto del lead → envía follow-up → si la respuesta menciona "precio", genera presupuesto personalizado con IA → envía presupuesto como PDF → programa llamada con ventas en 48h
Intenta construir eso en Zapier, Make o n8n. Chocarás con limitaciones en 5 minutos — y cuando algo falle a mitad de flujo, suerte intentando depurar qué paso se rompió y por qué.
Las herramientas que sí pueden hacerlo (Temporal, Prefect, Airflow) requieren equipos de ingeniería para configurar y mantener. Hay una brecha enorme entre "drag-and-drop para cosas simples" y "escribir código para todo lo complejo." Nosotros construimos justo en esa brecha.
El Editor Visual: Canvas API a 60fps
El editor de workflows es un canvas visual completo construido con React + Canvas API — no basado en DOM, lo que significa que maneja cientos de nodos sin lag:
- Drag-and-drop: Los nodos se arrastran desde una paleta categorizada a un canvas infinito
- Conexiones curvas: Curvas Bézier entre puertos de salida e input con highlighting al hover
- Zoom/Pan: 60fps fluidos a cualquier nivel de zoom, probado con 500+ nodos
- Multi-select: Selección rectangular para agrupar nodos
- Minimap: Vista de pájaro del workflow completo en la esquina
- Undo/Redo: Historial completo de cambios con shortcuts de teclado
- Copy/Paste: Duplicar nodos individuales o subflujos enteros
- Grid snap: Guías de alineación para layouts limpios
Solo la vista del editor son 5.086 líneas de React (WorkflowView.jsx). Cada tipo de nodo tiene su propio modal de edición dedicado — 10+ componentes especializados que dan control total al usuario sobre la configuración sin abrumarlo.
20+ Tipos de Nodo en 6 Categorías
Cada nodo está diseñado para uso real en producción, no para demos. Aquí está la taxonomía completa:
Nodos de IA (5 tipos)
- AI Agent: Chat con cualquier LLM (Gemini, GPT-4o, Claude, DeepSeek) con system prompt configurable, temperatura, max tokens e inyección de contexto desde nodos anteriores
- AI Image Generator: Generación de imágenes con FLUX, DALL-E 3, Imagen 3 — output directo a almacenamiento R2
- Semantic Search: Consulta de embeddings en Vectorize — devuelve resultados rankeados con scores de similitud
- AI Voice Call: Iniciar llamada telefónica potenciada por IA vía Twilio + ElevenLabs con guión de conversación
- AI Classifier: Clasificar texto en categorías — útil para routing de tickets, sentimiento, detección de intención
Nodos de Comunicación (5 tipos)
- WhatsApp Sender: Enviar vía API oficial o Desktop Agent local (con soporte multimedia completo)
- Email: Enviar emails con template vía Resend con campos dinámicos de merge
- TTS Generator: Generar archivos de audio con voces ElevenLabs — útil para intros de podcast, IVR, notificaciones
- Voice Call: Realizar llamadas salientes vía Twilio con guión o agente IA en vivo
- Push Notification: Enviar push a clientes web/móvil
Nodos de Datos (6 tipos)
- HTTP Request: GET/POST/PUT/DELETE a cualquier API con headers, auth, body y parsing de respuesta
- Data Table Query: Leer, escribir, actualizar o eliminar filas en DATA_TABLE de Cadences (D1)
- Variable Set/Get: Definir y leer variables de workflow que persisten entre nodos
- JSON Transform: Mapear, filtrar, reestructurar datos JSON entre nodos
- File Upload: Subir archivos a almacenamiento R2 — imágenes, PDFs, audio, cualquier binario
Nodos de Control de Flujo (7 tipos)
- Conditional: Ramificación if/else con condiciones complejas (soporta lógica AND/OR anidada)
- Loop: Iterar sobre arrays — procesar cada lead, cada archivo, cada resultado
- Delay: Esperar segundos, minutos, horas o días — la ejecución se reanuda automáticamente
- Switch: Multi-branch basado en valor — como una tabla de dispatch
- Merge: Reunir branches paralelos en un solo flujo
- Error Handler: Capturar errores de cualquier nodo, definir comportamiento fallback
- Parallel: Ejecutar múltiples branches simultáneamente — los resultados se fusionan cuando todos completan
Nodos Trigger (5 tipos)
- Webhook: Se activa con POST entrante — genera URL única por workflow
- Schedule: Basado en cron — cada hora, diario, semanal, expresión cron custom
- Manual: Ejecución con un click desde el dashboard
- Data Table Trigger: Se activa cuando se crea/actualiza/elimina una fila de DATA_TABLE
- IoT Trigger: Se activa cuando un sensor cruza un umbral (vía app desktop IoT Hub)
Nodos Especializados
- FHIR: Integración HL7 FHIR para salud — leer/escribir recursos Patient, Appointment, DiagnosticReport
- Scraper: Disparar tarea de web scraping desde la herramienta desktop Scraper
- IoT Command: Enviar comandos a dispositivos IoT (encender/apagar, establecer valor, leer sensor)
- Tester: Nodo de debug — loguea datos de entrada, añade assertions, útil para desarrollo
El Motor de Ejecución: 7.073 Líneas de Lógica de Producción
El editor visual es la parte bonita. La ingeniería real está en workflowExecutionEngine.js — 7.073 líneas que manejan cada caso extremo de ejecución de workflows en producción:
Arquitectura
Los workflows no se ejecutan en el navegador. Cuando se disparan, toda la definición del workflow se envía a un Cloudflare Worker que levanta un Durable Object para la ejecución:
- Cloudflare Worker: Recibe el trigger, valida el workflow, crea la instancia de ejecución
- Durable Object: Mantiene estado persistente durante toda la ejecución — sobrevive reinicios de workers, maneja flujos long-running (horas, días)
- Base de Datos D1: Dos tablas —
workflow_executions(estado global) yworkflow_execution_steps(resultados por nodo) - Actualizaciones en tiempo real: WebSocket + SSE empujan el progreso de ejecución al cliente conectado
Estados de Ejecución
Cada ejecución sigue una máquina de estados: queued → running → [waiting] → completed | failed | cancelled. El estado "waiting" es clave — maneja nodos de delay (vuelve en 24h), nodos de input humano (espera aprobación) y nodos de eventos externos (espera callback por webhook).
Debugging Paso a Paso
Esto es lo que separa un juguete de una herramienta. Nuestro motor de workflows tiene capacidades completas de debugging:
- Breakpoints: Se colocan en cualquier nodo — la ejecución se pausa, inspeccionas todas las variables
- Step Over: Ejecutar un nodo a la vez, ver entradas y salidas
- Inspect: Ver los datos exactos entrando y saliendo de cada nodo en cada ejecución
- Error History: Stack trace completo con el nodo que falló, el input que recibió y qué salió mal
- Replay: Re-ejecutar desde cualquier nodo específico — sin necesidad de re-ejecutar el flujo entero
El Sistema de Variables: Los Datos Fluyen Entre Nodos
Las variables son ciudadanos de primera clase. La salida de cada nodo es accesible para nodos posteriores vía sintaxis de template:
{{trigger.data.name}}— Datos del evento trigger{{node_3.output.text}}— Salida de un nodo específico por ID{{variables.counter}}— Variables definidas por el usuario durante la ejecución{{env.API_KEY}}— Variables de entorno (secretos, configuración){{date.today}}— Valores dinámicos de fecha/hora{{random.uuid}}— Identificadores únicos generados
El sistema de variables soporta inferencia de tipos — cuando conectas la salida de un nodo IA a un nodo condicional, el editor sabe que la salida es texto y ofrece comparaciones específicas para texto. Cuando un nodo de Data Table devuelve un número, obtienes operadores numéricos.
Workflows Reales Corriendo en Producción
Lead Nurturing — Agencia de Viajes
Webhook (nuevo lead desde web)
→ AI Classifier (hot / warm / cold)
├── HOT → AI Voice Call (contactar inmediato)
│ → Data Table (registrar en CRM)
│ → WhatsApp (enviar propuesta personalizada)
├── WARM → Email (secuencia de nurturing)
│ → Delay (3 días) → Email (follow-up)
└── COLD → Data Table (archivar)
→ Schedule (re-evaluar en 30 días)
Monitoreo IoT — Cliente Industrial
IoT Trigger (temperatura > 30°C)
→ Conditional (¿hora laboral?)
├── SÍ → WhatsApp (alerta al equipo)
│ → IoT Command (activar ventilación)
└── NO → Email (alerta nocturna)
→ IoT Command (activar ventilación)
→ AI Voice Call (llamar al responsable de guardia)
→ Data Table (registrar incidencia)
Contenido Multi-Canal — Automatización Semanal
Schedule (Lunes 9:00 AM)
→ AI Agent (generar tema de blog)
→ AI Agent (escribir artículo)
→ AI Image (generar imagen de portada)
→ Parallel
├── HTTP (publicar en blog CMS)
├── WhatsApp (compartir con suscriptores)
├── Email (newsletter semanal)
└── HTTP (publicar en redes sociales)
→ Data Table (registrar publicación)
Recordatorios a Pacientes — Centro de Imagen
Schedule (diario 8:00 AM, procesar citas de +48h)
→ Data Table (obtener citas de mañana)
→ Loop (para cada cita)
→ FHIR (obtener datos del paciente)
→ AI Agent (generar recordatorio en idioma del paciente)
→ WhatsApp Sender (enviar recordatorio)
→ Conditional (¿falló la entrega?)
├── SÍ → Email (fallback)
└── NO → Data Table (log: entregado)
→ Data Table (informe resumen diario)
Gestión de Errores Que Funciona de Verdad
En producción, las cosas fallan. Constantemente. Una API devuelve 500, un mensaje de WhatsApp no se entrega, un proveedor de IA hace timeout. Nuestro motor gestiona esto a tres niveles:
- Reintento a nivel de nodo: Cada nodo puede definir su propio número de reintentos (1-5) y estrategia de backoff (lineal, exponencial)
- Nodos Error Handler: Capturan errores de nodos específicos y definen flujos alternativos — enviar notificación, loguear el error, probar otro proveedor
- Timeout a nivel de workflow: Si toda la ejecución excede un límite de tiempo configurable, se marca como fallida con un resumen de qué completó y qué no
Cada ejecución fallida preserva el estado completo. Puedes inspeccionar exactamente qué nodo falló, qué datos recibió, y reintentar desde ese punto — no desde el principio.
Los Números
📄 Motor de Ejecución: 7.073 líneas (workflowExecutionEngine.js)
🎨 Editor Visual: 5.086 líneas (WorkflowView.jsx)
🧩 Tipos de Nodo: 20+ en 6 categorías
⚡ Rendimiento Canvas: 60fps zoom/pan con 500+ nodos
🔧 Editores de Nodo: 10+ componentes modales especializados
💾 Backend: Cloudflare Workers + Durable Objects + D1
🏥 Sectores que lo usan: Salud, viajes, inmobiliaria, retail
La Lección Real
Después de construir todo esto, esto es lo que hemos aprendido: el valor del "no-code" no es que sea fácil. Es que es visible. Cuando un project manager no técnico puede mirar un diagrama de workflow y entender exactamente qué pasa en cada paso — qué lo activa, qué datos fluyen adónde, qué pasa cuando algo falla — ahí es cuando la automatización deja de ser una caja negra aterradora y se convierte en un activo del equipo.
Las 7.073 líneas de código del motor existen para que la persona que construye el workflow nunca tenga que pensar en Durable Objects, transacciones D1, reconexión de WebSocket o estrategias de retry con backoff. Simplemente arrastran, conectan y despliegan. La complejidad está oculta — pero está ahí, gestionando cada caso extremo, 24/7.
Etiquetas
Sobre el Autor
Gonzalo Monzón
Fundador & Arquitecto Principal
Gonzalo Monzón es Arquitecto de Soluciones Senior e Ingeniero IA con más de 26 años construyendo sistemas críticos en Sanidad, Automatización Industrial e IA empresarial. Fundador de Cadences Lab, está especializado en conectar infraestructura legacy con tecnología de vanguardia.
Artículos Relacionados
Construir un Bot de WhatsApp Que No Se Banee — El Enfoque Desktop Agent
La API oficial de WhatsApp cuesta $0.05–0.15 por mensaje y restringe lo que puedes enviar. Los bots no oficiales se banean en semanas. Construimos un tercer camino: un agente desktop Electron con Playwright, comportamiento humano y cero baneos tras 8+ meses en producción.
De 4 Horas de Respuesta a Instantáneo: Cómo Nuestros Agentes de Voz IA Hacen Llamadas Reales
Twilio para llamadas, Gemini Flash para conversación en tiempo real, ElevenLabs para 15+ voces naturales. Construimos agentes IA que confirman citas en 35 segundos, cualifican leads con 3 preguntas y cambian entre español, inglés y catalán en medio de la llamada. Además: God Mode permite supervisión humana en vivo.
Edge Computing: Por Qué lo Apostamos Todo a Cloudflare (Y Qué Consigues por $65/Mes)
Sin servidores, sin contenedores, sin Kubernetes. Corremos 14+ productos interconectados en 9 productos Cloudflare — Workers, D1, R2, Durable Objects, Pages, KV, Vectorize, Workers AI y WAF. $65/mes por lo que costaría $400-600 en AWS. La arquitectura completa.