🔹 1. Visión General Del Proyecto
El cliente era una empresa de fabricación y comercio que trabajaba con eco-packaging, almacenes, marketplaces, ventas B2B/B2C y operaciones internas en Odoo. El sistema ya era el centro del negocio, pero después de años de cambios manuales, módulos externos, importaciones y ajustes en vivo con Studio, se había convertido en un nudo operativo difícil de gobernar
La dirección no necesitaba otro pequeño arreglo de Odoo. Necesitaba un sistema único que conectara departamentos, empleados, almacén, producción, ventas, correo, CRM, marketplaces, e-commerce y operaciones finales en un flujo controlado
Mi rol fue el de rescue engineer: entrar en un ERP caótico, desmontar deuda técnica y de procesos, y reconstruir un modelo operativo end-to-end desde la recepción de materia prima hasta la venta del producto terminado
🔹 2. Punto De Partida
•Deuda de infraestructura: Odoo corría en Hetzner con una mezcla de módulos custom y de terceros, algunos de los cuales no estaban listos para migrar a Odoo 19
•Catálogo sin modelo claro: productos mezclados entre plantillas, variantes, bundles, empaques, EAN, SKU de BaseLinker y lógica de almacén. Parte de los registros había sido creada por importaciones defectuosas como duplicados separados
•Base de contactos contaminada: duplicados, registros vacíos, entradas de prueba, formatos inconsistentes de datos bancarios, regiones y contactos
•Almacén y producción sin estructura de control: BoMs, materias primas, códigos de barras, salas de almacenamiento e impresión de etiquetas existían, pero necesitaban estabilización y normalización
•CRM y correo sin control completo: los mensajes se perdían en Discuss o en procesos manuales, los follow-ups los hacían managers a mano y las solicitudes de venta no tenían una ruta estable hacia quotation
•Riesgos de seguridad y calidad: durante la auditoría encontré una vulnerabilidad histórica en Followers: un contacto externo había sido suscrito por error a discusiones internas y durante bastante tiempo recibió copias de correspondencia operativa. También existían scheduled actions / cron jobs y automatizaciones de fondo sin dueño claro
🔹 3. Alcance Del Trabajo
•Migrar Odoo desde Hetzner a Odoo.sh / Odoo Cloud y adaptar el sistema a Odoo 19
•Auditar módulos custom, conservar lo necesario, eliminar lo incompatible y estabilizar PBX y UI después de la actualización
•Limpiar contactos, leads, datos bancarios y regiones
•Normalizar catálogo de productos y nomenclatura de producción: plantillas, variantes, SKU, EAN, empaques, fotos, peso, dimensiones, materias primas y mapping de BaseLinker
•Configurar lógica de almacén: BoM, materias primas RAW, códigos de barras, salas de almacenamiento, etiquetas y estructura production-ready
•Configurar control de asistencia y disciplina operativa: la oficina debía trackear tiempo dentro de Odoo, mientras almacén y producción trabajaban mediante escaneo de códigos de barras
•Construir automatización de correo y CRM: AI routing, lead qualification, deterministic rules, follow-ups y sales draft flow
•Preparar e-commerce, portal B2B/B2C, integraciones Shopify / Allegro / delivery y tracking layer
•Reintegrar el catálogo limpio, la lógica de almacén y los datos de producto en marketplaces y tienda online
🔹 4. Solución Y Ejecución
Infrastructure & Odoo 19 Migration
•Audité el antiguo entorno Hetzner y la carpeta de módulos Odoo
•ERP migrado a Odoo.sh / Odoo Cloud, con la base actualizada a Odoo 19
•Código custom y consultas ORM adaptadas a la nueva versión del core
•Migré y adapté un conjunto de módulos custom y de terceros para telefonía, HR, compras, procesos internos y extensiones de servicio de Odoo
•Los módulos incompatibles de telefonía y OCA fueron retirados de la arquitectura objetivo para no arrastrar deuda técnica a la nueva instalación Odoo 19
Product Catalog Recovery
•Audité el estado real del catálogo: productos, variantes, empaques, bundles, materias primas, SKU, EAN, fotos, precios, dimensiones y BaseLinker mapping estaban mezclados sin una lógica común
•A partir del análisis técnico y una investigación data-driven preparé varias opciones de reestructuración, con riesgos e impactos para almacén, marketplaces, e-commerce y producción
•Tras aprobar el modelo objetivo, creé una naming convention para todo lo que podía tener nombre: productos, plantillas, variantes, empaques, bundles, materias primas, SKU, lógica EAN, fotos y atributos
•El catálogo pasó de ser una masa caótica de registros a una jerarquía controlada product template → product variant, donde cada sellable SKU tenía rol, nombre, empaque, EAN, peso, dimensiones y conexión con BaseLinker
•Los nombres de producto se reescribieron no solo para la lógica interna de inventario, sino también para el comportamiento real de búsqueda de los clientes: la investigación data-driven alineó nombres y metadatos con consultas reales, apoyando el crecimiento de ventas tras actualizar tienda y marketplaces
•El desorden de importaciones se resolvió con contexto: detecté una ola de 719 productos/plantillas mal creados, separé los registros realmente usados en ventas o almacén y archivé el ruido no utilizado sin perder datos operativos
•El resultado fue un catálogo mantenible: SKU, nombres, atributos, fotos, metadatos, BaseLinker mapping y lógica de almacén dejaron de contradecirse y se convirtieron en una base estable para sincronizar tienda y marketplaces
Warehouse, BoM & Barcode Logic
•Las materias primas se movieron a una estructura RAW
•Se crearon BoMs para productos terminados y kits
•Las existencias se vincularon a salas de almacenamiento concretas
•Se corrigió la impresión de etiquetas tras la migración a Odoo 19: los reportes pasaron al nivel product.product y se ajustaron QWeb templates, nombres de archivos de impresión, barcode fields y variant attributes
•Se detectaron y aislaron 11 conflictos EAN, con 8 pares EAN confirmados migrados mediante pipeline backup / plan / rollback / verify
CRM, Contacts & Database Hygiene
•Se eliminaron 1380 contactos duplicados, 34 registros de prueba y 59 fichas vacías
•Se normalizaron IBAN, BIC/SWIFT y direcciones bancarias para 10 bancos
•Se estandarizaron voivodías y localización para 11 idiomas
•Se prepararon cold leads y listas custom para lead generation, CRM outreach y posterior sales enrichment
•Se redujo el ruido CRM de leads creados automáticamente: los correos de contactos existentes debían entrar en el historial de comunicación de ese contacto, no crear una nueva ficha de lead cada vez
Mail Routing, AI Qualification & Sales Automation
•Diseñé e implementé MelonRing AISMR — un módulo Odoo para inbound email routing, AI qualification, deterministic rules y audit trail •Se configuró la lógica de routing: nuevas consultas comerciales crean crm.lead con categoría, responsable, tags, prioridad y summary, mientras que los emails de contactos existentes se vinculan al registro existente y no generan leads duplicados
•Se implementaron reglas Poka-yoke contra envíos masivos directos por SMTP local
•Se cerró una fuga histórica vía mail.followers: se limpiaron suscripciones incorrectas, se bloqueó añadir contactos externos a objetos internos sensibles y la prevención quedó como regla explícita del sistema
•Se revisaron scheduled actions / cron jobs: se eliminaron tareas de fondo redundantes o activadas sin conciencia operativa, que duplicaban lógica estándar, recalculaban datos o creaban carga imprevisible sin dueño de negocio
•La infraestructura de correo se movió a SendGrid, se verificó SPF/DKIM y el bounce rate bajó de ~15% a menos de 1%
•Se construyó una capa de sales automation: qualification states, draft-input snapshots, partner/product/qty/pricing candidates y manager review antes de quotation generation
E-commerce & Integrations
•Se configuró Shopify sync, rutas de almacén, ubicaciones de tránsito y conversión automática de pedidos
•Se prepararon técnicamente integraciones FedEx PL, DHL e InPost para cálculo de entrega y generación de etiquetas
•Se preparó Odoo E-commerce y portal B2B como reemplazo de Shopify
•Se añadió un Odoo theme layer custom y MelonRing Meta Pixel tracking para Odoo Website Sale
•Se preparó Allegro Odoo Sync para importar pedidos vía Allegro REST API
•Después de normalizar productos, materias primas, SKU, EAN, fotos, peso y dimensiones, los datos actualizados se reintegraron en marketplaces y tienda online
🔹 5. Stack Técnico
•ERP Core: Odoo 19, Odoo.sh / Odoo Cloud, Python, XML/QWeb, ORM
•Data & Integration: XML-RPC, BaseLinker API, Shopify integration, Allegro REST API, CSV pipelines
•CRM & AI: Odoo CRM, mail.thread, crm.lead, OpenAI-style AI qualification architecture, deterministic rule engine
•Sales & E-commerce: Odoo Sales, Website Sale, B2B/B2C portal, quotation draft workflow, Meta Pixel
•Warehouse & Manufacturing: Inventory, Barcode, MRP, BoM, product.product, product.template, product dimensions, label reports
•Communication: Zadarma PBX, SendGrid SMTP, IMAP/SMTP routing, SPF/DKIM, mail followers cleanup
🔹 6. Resultados Y Valor De Negocio
•ERP estabilizado después de la migración: Odoo pasó de Hetzner a Odoo.sh, se actualizó a Odoo 19 y se limpió de módulos incompatibles
•Operaciones convertidas en un flujo único: la dirección recibió una base técnica que conecta departamentos, empleados, almacén, producción, ventas, CRM, correo e integraciones en un solo sistema, desde materias primas hasta venta final
•Catálogo bajo control: alrededor de 400 plantillas y variantes se movieron a una jerarquía limpia, y el BaseLinker/Odoo SKU mapping pasó a ser deliberado, no una importación ciega
•Los datos actualizados volvieron a ventas: catálogo normalizado, lógica de almacén, fotos, SKU, EAN, peso y dimensiones fueron reintegrados en marketplaces y tienda online
•Base de datos limpiada: se eliminaron 1380 contactos duplicados, 34 registros de prueba y 59 fichas vacías, con datos y regiones normalizados
•Almacén con base real para automatizar: BoM, materias primas RAW, códigos de barras, salas de almacenamiento y etiquetas pasaron a un modelo más estable
•Reputación de correo protegida: SendGrid + SPF/DKIM redujeron el bounce rate de ~15% a menos de 1%
•CRM con capa de automatización: inbound email routing, AI qualification, follow-up automation y sales draft flow con revisión de manager
•Riesgos operativos reducidos: se encontró y cerró una fuga histórica por Followers, se bloquearon envíos masivos peligrosos, se limpiaron scheduled actions / cron jobs redundantes y se resolvieron errores críticos QWeb/PBX/Owl 2 tras la migración
🔹 7. Estado Actual
Launched / Technically Ready. El sistema quedó técnicamente estabilizado, con módulos clave e integraciones preparadas. Parte del efecto de negocio depende de la adopción interna: disciplina en CRM, escaneo en almacén, pruebas de servicios de mensajería y trabajar dentro de Odoo en lugar de volver a procesos manuales