
Reemplacé OpenAI en Mi Flujo de Trabajo n8n con un Modelo Ajustado — Así Es Como
Los nodos de IA de n8n llaman a OpenAI por defecto. Cada ejecución es una llamada API. A escala, esto se convierte en tu mayor costo variable. Así reemplacé el nodo de OpenAI con un modelo ajustado en Ollama — mismo flujo, cero costo por ejecución.
n8n es la plataforma de automatización de flujos de trabajo que los desarrolladores técnicos eligen cuando necesitan control total. Se auto-aloja, es open-source, y tiene nodos de IA integrados que se conectan directamente a la API de OpenAI.
Ese es el problema: esos nodos de IA llaman a OpenAI en cada ejecución. Si tu flujo de trabajo se ejecuta 500 veces al día (lo cual es modesto para automatización de producción), estás haciendo 15,000 llamadas API al mes. A $0.01-0.03 por llamada, eso son $150-450/mes — solo de la parte de IA de tu automatización.
Lo reemplacé con un modelo ajustado corriendo en Ollama. Mismo flujo de trabajo. Mismo formato de output. Cero costo por ejecución.
La Configuración Antes
Mi flujo de trabajo n8n procesaba correos de soporte entrantes:
- Trigger: Correo nuevo llega a la bandeja de soporte
- Nodo AI (OpenAI): Clasifica el correo (facturación, técnico, ventas, spam)
- Nodo AI (OpenAI): Extrae campos clave (nombre del cliente, ID de cuenta, urgencia)
- Router: Enruta a la cola apropiada basándose en la clasificación
- Nodo AI (OpenAI): Genera borrador de respuesta
Tres llamadas API de OpenAI por correo. A 200 correos/día, eso son 600 llamadas API diarias = 18,000/mes.
Costo mensual de OpenAI para este flujo de trabajo: $270-540 (dependiendo de la longitud de los correos y respuestas).
La Configuración Después
Mismo flujo de trabajo, pero el nodo de OpenAI fue reemplazado con solicitudes HTTP a Ollama:
- Trigger: Correo nuevo llega a la bandeja de soporte
- Nodo HTTP (Ollama): Clasifica el correo
- Nodo HTTP (Ollama): Extrae campos clave
- Router: Enruta basándose en la clasificación
- Nodo HTTP (Ollama): Genera borrador de respuesta
Costo mensual: $26/mes (VPS de Hetzner corriendo Ollama).
Mismas 18,000 ejecuciones. 95% menos costo.
Cómo Hice el Cambio
Paso 1: Recopilar datos de entrenamiento de los logs de OpenAI
Exporté 2,000 ejecuciones anteriores del flujo de trabajo — las entradas de correo y las salidas de OpenAI. Estos se convirtieron en pares de entrenamiento:
Para clasificación:
{"input": "Hola, no puedo acceder a mi cuenta desde ayer...", "output": "técnico"}
Para extracción:
{"input": "Hola, soy Juan Pérez, cuenta #4521, no se aplicó el descuento...", "output": "{\"nombre\": \"Juan Pérez\", \"cuenta\": \"4521\", \"urgencia\": \"media\", \"tema\": \"facturación\"}"}
Para generación de respuestas:
{"input": "clasificación: facturación\ncampos: {nombre: Juan Pérez, cuenta: 4521}\ncorreo_original: ...", "output": "Hola Juan, gracias por contactarnos..."}
Paso 2: Ajustar con Ertas
Subí los tres datasets a Ertas. Seleccioné Qwen 2.5 7B como modelo base. Entrené tres adaptadores LoRA — uno para clasificación, uno para extracción, uno para generación de respuestas.
Tiempo de entrenamiento: ~45 minutos total para los tres.
Paso 3: Desplegar en Ollama
En mi VPS de Hetzner (CX22, 4 vCPU, 8GB RAM, $7/mes — actualicé a CX32 con 16GB por $14/mes para headroom):
curl -fsSL https://ollama.com/install.sh | sh
# Crear modelos desde los archivos GGUF
ollama create support-classifier -f ClassifierModelfile
ollama create support-extractor -f ExtractorModelfile
ollama create support-responder -f ResponderModelfile
Paso 4: Actualizar los nodos de n8n
Reemplacé cada nodo de OpenAI AI con un nodo HTTP Request que apunta a Ollama:
URL: http://mi-vps:11434/api/generate
Método: POST
Body:
{
"model": "support-classifier",
"prompt": "{{$json.email_body}}",
"stream": false
}
El formato de respuesta es compatible — parseo la respuesta de la misma manera que parseaba las respuestas de OpenAI.
Resultados
| Métrica | OpenAI | Modelo Ajustado |
|---|---|---|
| Precisión de clasificación | 91% | 94% |
| Precisión de extracción | 88% | 92% |
| Calidad de respuesta (evaluación humana) | 4.1/5 | 3.9/5 |
| Latencia por llamada | 800ms | 200ms |
| Costo mensual | $270-540 | $26 |
El modelo ajustado es en realidad más preciso en clasificación y extracción porque fue entrenado específicamente con mis categorías y esquemas de campos. La calidad de respuesta es ligeramente inferior en redacción creativa, pero perfectamente aceptable para borradores de soporte.
Dónde Esto Funciona Mejor
Este patrón funciona para cualquier flujo de trabajo n8n donde:
- La tarea de IA es repetitiva y bien definida (clasificación, extracción, formateo)
- El volumen es lo suficientemente alto como para que los costos de API importen (más de 100 ejecuciones/día)
- La tarea de IA es específica del dominio (tu terminología, tus categorías, tus formatos)
Flujos de trabajo comunes de n8n que se benefician:
- Procesamiento de correos (clasificar, extraer, responder)
- Procesamiento de formularios (validar, categorizar, enrutar)
- Monitoreo de contenido (analizar, puntuar, alertar)
- Procesamiento de datos (transformar, enriquecer, estandarizar)
Dónde NO Funciona
- Tareas de IA poco frecuentes (menos de 50 ejecuciones/día) — el costo del VPS excede el ahorro de la API
- Tareas creativas o analíticas abiertas — los modelos frontier son genuinamente mejores aquí
- Tareas que cambian frecuentemente — si los requisitos cambian semanalmente, la sobrecarga de reentrenamiento no vale la pena
Ship AI that runs on your users' devices.
Ertas early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.
Lectura Adicional
- n8n + Ollama + Stack de Costo Cero con Modelo Ajustado — La arquitectura completa del stack de automatización
- Costos de IA de Apps Replit Explotando — Mismo patrón para apps de Replit
- Ejecutar Modelos de IA Localmente — Guía de configuración de Ollama
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.
Keep reading

Bolt.new Apps and the OpenAI Cost Cliff: What Happens at Scale
Bolt.new makes it easy to add AI features. Here's exactly what happens to your OpenAI bill as users grow — and how to replace it with a fine-tuned local model at flat cost.

Replit App AI Costs Exploding? Replace OpenAI with a Fine-Tuned Local Model
Replit's always-on deployment and easy AI integration create a specific API cost problem. Here's how to replace OpenAI with a fine-tuned local model and cut costs to flat rate.

MCP + Fine-Tuned Local Model: Connect Claude to Your Domain-Specific AI
Model Context Protocol (MCP) lets Claude Desktop talk to any server — including your own Ollama-hosted fine-tuned model. Here's the architecture and setup for routing Claude requests to a custom domain model.