Qué cubre esta guía
Para quien vende y para quien configura. No hace falta saber cómo está construido el programa.
Venta cruzada
Agregar algo que el cliente no pidió pero que acompaña a lo que ya lleva: el complemento, el kit que se completa, lo que se compra junto.
Venta ascendente
Ofrecer una versión mejor de lo mismo: más cantidad, o el bulto en lugar de la unidad suelta.
ERP, no TPV
Presupuesto, pedido, orden de servicio, oportunidad, factura y remito. El TPV es de otro equipo; el motor está preparado para sumarlo sin migrar datos.
Dónde está cada cosa
Un panel en el documento, y tres pantallas de administración.
| Dónde | Para qué sirve | Sección |
|---|---|---|
| Documento de venta › Sugerencias | El panel. Se abre con el botón que muestra la cantidad de propuestas. El vendedor elige y agrega la línea. | 05 |
| Ventas › Reglas de sugerencia | Las reglas cargadas a mano: “si lleva esto, ofrecé aquello”. Es el único criterio que decide una persona. | 04 |
| Configuración › Venta cruzada | El interruptor de la empresa: cuántas sugerencias, en qué documentos, con qué pesos. | 09 |
| Ventas › Afinidad de canasta | Lo que el sistema aprendió de las ventas reales: qué se compra junto con qué. | 04 |
Antes de empezar
Sin la capacidad sales-cross-sell concedida a la empresa, el botón no aparece en ninguna pantalla. Es a propósito: la función se entrega apagada y se enciende por empresa.
Qué capturar: la barra de acciones de un pedido de venta con el botón Sugerencias (3) visible.
Cómo decide el motor
Un solo lugar decide qué se sugiere y en qué orden. Ningún cliente reordena ni filtra por su cuenta.
El motor recorre cinco fuentes en un orden fijo, se queda con lo primero que aparece para cada par artículo → sugerido, y después ordena y recorta.
Precedencia: lo que decidió una persona gana
Si dos fuentes proponen el mismo par, gana la de menor orden. Así una regla cargada por el equipo nunca queda tapada por una correlación estadística.
Ranking: por qué este primero
| Componente | Peso | Qué premia |
|---|---|---|
| Prioridad de la fuente | 0,35 | Reglas mejor puntuadas por el equipo |
| Margen del artículo | 0,25 | Lo que deja más, sin dejar de ser lo que corresponde |
| Afinidad | 0,20 | Cuánto sube la chance de venta llevarlo junto |
| Stock disponible | 0,10 | Que se pueda entregar |
| Señal estratégica | 0,10 | Reservado para criterios de negocio (hoy en cero) |
Se restan dos penalizaciones: −0,30 si el stock no cubre la cantidad sugerida y −0,50 si el margen está por debajo del piso configurado. El resultado es determinista: la misma entrada devuelve el mismo orden, y pedir tres es el prefijo de pedir cinco.
Filtros duros
No se negocian
Sin precio no se sugiere: mostrar un precio que la venta no aplicará es peor que no mostrar nada.
Sin stock por encima del mínimo, tampoco — salvo que la empresa permita encargo.
Lo que ya está en el documento no se repite. Un artículo inactivo, discontinuado o excluido de venta no entra, aunque una regla lo diga.
Los cinco criterios, uno por uno
De dónde sale el conocimiento de cada sugerencia.
Dos artículos y una decisión
Si el documento lleva A, ofrecé B. Lleva tipo (cruzada o ascendente), prioridad de 0 a 100, motivo visible, canales y vigencia.
Es el único criterio que se puede usar en factura: un comprobante fiscal sólo admite lo que decidió una persona.
Falta una pieza
Si el documento ya lleva al menos dos componentes de un kit y falta alguno, se ofrece el kit completo con el ahorro contra comprar las piezas sueltas.
La lista de materiales se lee completa: para saber qué le falta a un kit de tres piezas hay que ver las tres.
El bulto en lugar de la unidad
Unidad a $100; bulto de 12 a $1.080 (90 por unidad): el panel ofrece el bulto con un ahorro de $120.
Tres filtros: un solo escalón (el más chico que sea mayor, no el pallet), sólo si ahorra contra las sueltas, y nunca si el bulto ya está en el documento.
Cada cuánto lo compra
Se calcula la mediana de los intervalos entre compras —no el promedio, para que un mes de pausa no adelante la reposición— y se avisa al 90 % del ciclo.
Con menos de tres compras no hay ciclo. Si compró ayer, no se avisa: llegar antes es molestar. Sin cliente identificado no hay nada que calcular.
Los que llevan esto también llevan aquello
Sale de contar facturas, no de una intuición. De los documentos con A, qué proporción lleva B (confianza), comparado con la frecuencia normal de B (lift).
Si B se vende mucho igual, el par no aporta nada. Se descarta lo que no supera lift 1,2, confianza 0,05 y 30 documentos.
Cómo se publica la afinidad
El cálculo corre aparte y publica un conjunto nuevo en un solo commit. El panel lee sólo lo publicado: nunca ve una tabla a medio calcular ni cambia de criterio en medio de una venta.
Modo de venta chico
Un negocio con poco volumen puede no generar afinidad hasta acumular historial suficiente del mismo par. Eso es correcto, no un defecto: con ocho casos no se afirma una correlación.
Qué ve el vendedor
El panel y qué significa cada columna.
El botón del documento muestra la cantidad de propuestas antes de abrirlo: Sugerencias (3). Adentro, una fila por candidato.
| Columna | Qué dice |
|---|---|
| Código · Artículo | Qué se está ofreciendo, por su referencia comercial |
| Precio · Stock | El precio que se aplicará al agregar la línea, y el stock del depósito del documento |
| Por qué | El motivo: “Completa el kit”, “Toca reponer…”, “Presentación mayor” |
| Origen | Quién lo decidió: “Regla del equipo”, “Se compran juntos”, “Recompra del cliente” |
| Ahorro | Cuando aplica: cuánto se ahorra contra la alternativa |
Aceptar
La línea entra al documento por el mismo camino que si se cargara a mano: mismos impuestos, mismos descuentos, mismo precio. No hay un camino paralelo para las sugerencias.
Aceptar no guarda el documento: el vendedor sigue editando y guarda cuando termina. Ninguna sugerencia se agrega sola.
Qué capturar: el panel abierto con tres filas, mostrando las columnas Por qué y Origen.
Lo que nunca sugiere
Reglas que no dependen de la configuración.
| Situación | Qué hace | Por qué |
|---|---|---|
| El artículo ya está en el documento | No lo propone | Repetir una línea ya cargada confunde y hace perder tiempo |
| Sin precio | No lo propone | Un precio que la venta no aplicará es peor que nada |
| Sin stock del depósito del documento | No lo propone | Prometer lo que no se puede entregar |
| Artículo inactivo o discontinuado | No lo propone | Aunque una regla lo diga |
| Factura o comprobante fiscal | Sólo reglas del equipo | Una correlación no empuja líneas a un comprobante |
| Documento bloqueado fiscalmente | El botón no aparece | No se toca un comprobante cerrado |
| Sin la capacidad concedida | El botón no aparece | La función se entrega apagada |
Si algo falla
El panel es una ayuda, no un requisito. Si el motor no responde, el documento se sigue editando y guardando normalmente. Ninguna sugerencia frena una venta.
Cómo se mide si sirvió
Dos registros, un número, y la honestidad de decir cuándo no se puede calcular.
Exposición
Que el panel se mostró, con cuántas sugerencias, a quién y cuándo.
Atribución
Que una línea entró por una sugerencia, con su origen y su posición en el ranking.
Tasa de aceptación
Documentos con al menos una aceptación sobre documentos donde el panel se mostró.
Cuándo la tasa no se muestra
Si no hay denominador, o si hay aceptaciones de documentos que nunca quedaron registrados como expuestos, el número devuelve vacío en vez de cero.
Un cero se lee como “no funcionó”; vacío se lee como “no se midió”, que es la verdad.
También informa qué reglas se mostraron y nunca se aceptaron: son las candidatas a suspender.
Sobre el margen
El margen que reporta es el margen bruto de las líneas aceptadas, no margen incremental. Descontar la canibalización exige comparar contra un grupo de control, y eso no se calcula. Llamarlo “incremental” sería el error que hace tomar decisiones con números falsos.
API y asistente
El mismo motor, servido a otros clientes.
| Parámetro | Qué es |
|---|---|
| itemCodes | Códigos ya presentes, separados por coma (máximo 50) |
| customerId | Opcional. Habilita recompra y lista de precios |
| limit | De 1 a 5. Por defecto, lo configurado por la empresa |
| surface | quote · order · invoice |
Sin depósito indicado se usa el stock total del artículo; con depósito, el de ese depósito. La respuesta trae precio, stock, motivo, origen y posición, y una marca degraded cuando el motor no pudo responder: un cliente debe poder distinguir “no hay nada” de “no se pudo calcular”.
La misma respuesta, sin lógica propia
La herramienta suggest_complementary llama al mismo endpoint: un solo motor, un solo ranking, un solo número.
Su descripción le prohíbe explícitamente inventar productos cuando la respuesta viene vacía.
Configuración por empresa
Una sola ficha decide el comportamiento del panel.
| Campo | Por defecto | Qué controla |
|---|---|---|
| Máximo de sugerencias | 3 | Cuántas se muestran. Nunca más de 5 |
| Superficies habilitadas | Presupuesto y pedido | En qué documentos aparece el panel. Factura viene apagada |
| Piso de margen | 0 | Debajo de esto, el candidato recibe penalización |
| Stock mínimo | 1 | Sin este stock, no se ofrece |
| Permitir sin stock | No | Habilita ofrecer con encargo |
| Pesos del ranking | 35/25/20/10/10 | Prioridad, margen, afinidad, stock y señal estratégica |
| Ocultar tras rechazos | Vacío | Deja de ofrecer lo que el cliente rechazó varias veces |
Cuidado con los pesos
Subir afinidad premia la estadística sobre lo que decidió el equipo. Antes de moverlos, conviene mirar qué reglas se están mostrando y cuáles nunca se aceptan.
Lo que todavía no hace
Para no esperar del módulo algo que no está.
| Capacidad | Estado | Detalle |
|---|---|---|
| Regla cargada a mano | Disponible | Cruzada y ascendente, con prioridad y vigencia |
| Kit incompleto | Disponible | Con ahorro contra las piezas sueltas |
| Presentación mayor | Disponible | Sólo si ahorra por unidad |
| Recompra del cliente | Disponible | Mediana del ciclo, aviso al 90 % |
| Afinidad de canasta | Disponible | Con umbrales; necesita historial |
| Escalón de cantidad | No disponible | Requiere re-tarifar la línea al cambiar la cantidad. Sin eso, la sugerencia prometería un precio que la venta no aplica |
| Escalera de mejora por precio o gama | No disponible | No existe la relación producto → sucesor. Hoy se resuelve con reglas cargadas a mano |
| Servicio adjunto automático | No disponible | No existe relación producto → servicio |
| Comisión extra por venta cruzada | No disponible | La comisión se calcula en el informe comercial; no hay motor de comisiones |
| Canales web y comercio electrónico | Parcial | El motor y el endpoint los soportan; los conectores son trabajo aparte |
| TPV | Fuera de alcance | Otro equipo. El canal está reservado para sumarlo sin migrar datos |
Guía de pruebas paso a paso
Para recorrer el circuito en un entorno de pruebas. Las casillas se guardan en este navegador.
La empresa tiene concedida la capacidad de venta cruzada
Abrir un pedido nuevo y mirar el botón antes de guardar
Cargar una línea de un artículo con regla cargada
Abrir el panel y leer “Por qué” y “Origen”
Aceptar una sugerencia y revisar la línea agregada
Guardar el pedido y verificar la marca de “se mostró sugerencias”
Cargar la unidad suelta de un artículo que tenga bulto que ahorre
Abrir una factura de venta y mirar el panel
Repetir en el cliente Windows y en el web
Consultar la efectividad del período
Antes de dar la función por probada
Recorrer esta lista en los dos clientes. Un panel que compila no es un panel que se ve; la primera vez que se abre en producción es donde aparecen las diferencias de renderizado.