Sistema de inteligencia aplicada para homologar productos de facturas contra un maestro, clasificar atributos comerciales y reentrenar modelos de forma segura, promoviendo un nuevo modelo solo cuando realmente supera al anterior.
Este proyecto automatiza el trabajo de normalización de productos entre fuentes heterogéneas, especialmente cuando:
- los códigos de producto no están homologados,
- el texto del producto viene sucio o inconsistente,
- existen múltiples proveedores con catálogos distintos,
- se necesita inferir atributos como marca, categoría, factor de venta y peso,
- se requiere mejorar el modelo con nuevos datos sin arriesgar el modelo productivo actual.
El sistema combina reglas basadas en maestro, procesamiento de texto y modelos de machine learning para resolver dos problemas principales:
- Clasificación de atributos del producto
- Homologación entre producto factura y producto maestro
Predice atributos del producto a partir de información de factura, como:
factorVentafactorConversionpesoUnitarioKgpesoCajaKgmarcacategoria
Además, puede resolver varios de estos atributos directamente desde el maestro cuando existe evidencia suficiente, dejando la red neuronal como respaldo.
Encuentra el producto maestro más probable para un ítem de factura, incluso cuando:
- no existe coincidencia exacta por código,
- los nombres del producto tienen ruido,
- el proveedor usa una codificación distinta,
- hay diferencias de escritura, empaque o unidad.
El proyecto implementa una estrategia tipo champion/challenger:
- se entrena un modelo candidato,
- se evalúa contra la validación actual,
- se compara contra el modelo campeón vigente,
- solo se promueve si el candidato aprendió mejor,
- si no mejora, el modelo actual se conserva.
Esto evita degradar producción por un entrenamiento peor o inestable.
El proyecto está dividido en dos motores principales:
Responsable de inferir atributos del producto.
Componentes relevantes:
- construcción del dataset de entrenamiento,
- extracción y normalización de texto,
- generación de targets desde el maestro,
- entrenamiento del modelo,
- inferencia batch,
- resolución híbrida desde maestro para ciertos atributos.
Responsable de encontrar correspondencias entre producto factura y producto maestro.
Componentes relevantes:
- armado de pares positivos/negativos,
- entrenamiento inicial,
- minería de hard negatives,
- scoring de candidatos,
- ranking de matches.
Se expone mediante FastAPI, con endpoints separados para:
- predicción del clasificador,
- predicción del homologador,
- entrenamiento del clasificador,
- entrenamiento del homologador.
Los modelos y resultados de entrenamiento se organizan en carpetas de artefactos, incluyendo:
- campeón actual,
- candidatos,
- rechazados,
- modelos archivados reemplazados,
- reportes de entrenamiento y promoción.
- Se recibe un lote de productos factura.
- Se normaliza el texto y se construye el frame de inferencia.
- El modelo predice atributos.
- Si hay maestro disponible, algunos atributos pueden resolverse desde maestro.
- Se devuelve una salida consolidada.
- Se recibe un producto factura.
- Se generan candidatos del maestro.
- El modelo calcula score por candidato.
- Se rankean los resultados.
- Se devuelve el mejor match y/o top-k.
- Se cargan datasets base.
- Se construye el dataset de entrenamiento.
- Se entrena un candidato.
- Se evalúa candidato vs campeón sobre la misma validación actual.
- Se decide si promover o rechazar.
- Se archiva el resultado.
Estructura lógica referencial:
app/
api/
v1/
clasificador.py
homologador.py
schemas/
clasificador.py
homologador.py
services/
entrenamiento_clasificador_service.py
entrenamiento_homologador_service.py
inferencia_clasificador_service.py
inferencia_homologacion_service.py
ml_pipeline/
clasificador/
model.py
trainer.py
training_data.py
factor_resolver.py
weight_resolver.py
homologador/
model.py
trainer.py
utils/
retraining.py
preparacion.py
matching.py
scripts/
clasificador/
entrenar.py
homologador/
entrenar.py
data/
artifacts/