La mayoría de los catálogos tiene un código: el SKU. Funciona hasta que el proveedor de tu comprador usa su propio código, y el sistema de compras de tu cliente más grande espera un tercer código, y el ERP interno de veinte años que estás eliminando todavía no se ha dado de baja.
Esta es la realidad de la distribución. Los productos se mueven entre sistemas, y cada sistema tiene su propia convención de nombres. La factura del proveedor dice 'FAN-450-B'. Tu almacén lo etiqueta 'FAN450'. El portal de compras del cliente espera 'FAN-450-BLACK'. Y el ERP legado — ese que corre desde 2003 y nadie se atreve a apagar — todavía lo llama 'ELEC-FAN-0450'. Cuatro códigos. Un producto. Y si tu herramienta de cotización solo entiende uno, estás traduciendo manualmente los otros tres cada día.
Las cuatro columnas
El Product de Quotery lleva sku, import_code, internal_code y export_code. Cada uno con GIN trigram para búsqueda rápida por substring. Cada uno buscable por separado o en conjunto.
El índice trigram es el héroe invisible aquí. Un índice B-tree estándar responde '¿existe este string exacto?' pero no '¿este string aparece en algún lugar de este campo?' Con GIN trigram, una búsqueda por 'FAN450' encuentra 'FAN-450-B', 'FAN450BLK' y 'ELEC-FAN-0450' — todo en milisegundos. Esto importa porque los documentos de proveedor rara vez usan el formato exacto de tu código. Agregan guiones, quitan prefijos, concatenan con colores. El índice trigram absorbe esa varianza sin exigirle al usuario que aprenda regex.
Por qué le importa a la importación con IA Cuando el importador con IA procesa una línea, verifica las cuatro columnas antes de pedirle al modelo razonar. Es la diferencia entre una importación 99% determinística y quemar tokens en un problema que ya resolviste.
Cada match determinístico ahorra aproximadamente 200-500 tokens y 500ms de latencia. En una importación de 20 líneas, si 14 hacen match determinístico, el paso de IA solo procesa 6 líneas en vez de 20 — una reducción del 70% en costo y latencia. Y los matches determinísticos son garantizados correctos. Los matches de IA son probabilísticos. Cada línea que puedes resolver sin el modelo es una línea que no tienes que revisar.
Amigable para migración
Un cliente que migra desde un sistema legado puede volcar los códigos viejos en internal_code, levantar SKUs frescos, y dejar que el importador haga de puente hasta que el código viejo se desvanezca.
La migración es la fase de mayor riesgo en cualquier cambio de sistema. Los códigos viejos no desaparecen de la noche a la mañana — los proveedores siguen enviándolos, los clientes siguen pidiendo por ellos, y los catálogos impresos todavía los referencian. Manteniendo los códigos viejos vivos en internal_code mientras el nuevo sistema de SKU toma el control, la transición es gradual y reversible. Cuando el último proveedor cambie al nuevo código y el último cliente deje de usar el antiguo, puedes dejar de poblar internal_code. Pero hasta entonces, el puente se mantiene.
