En este artículo, describiré un método relativamente simple para lanzar una función de venta cruzada (productos ofrecidos a un cliente además de los que están en el carrito) en el comercio electrónico, como comestibles o servicios de comida a domicilio, que implementamos con éxito en la aplicación móvil "Mnogo Lososya". Este es un sistema de recomendación de filtrado colaborativo básico que combina enfoques basados en el usuario y en el artículo y se puede utilizar en una variedad de proyectos de comercio electrónico, particularmente aquellos con una gran cantidad de SKU, para proporcionar una amplia gama de recomendaciones.
Mnogo Lososya, fundada en 2018, es una cadena de más de 50 fantasmas y más de 250 cocinas para llevar, así como una marca paraguas para múltiples conceptos de platos. Nuestro único punto de venta es la entrega en 30 minutos de comidas recién preparadas. Nos hemos estado expandiendo rápidamente y recientemente superamos 100k MAU de aplicaciones con más de 100M RUB en ingresos brutos mensuales.
La mayoría de nuestros pedidos se realizan en línea, un tercio proviene de nuestra propia aplicación móvil y los otros dos tercios provienen de los servicios de entrega. La app es un componente importante de nuestro producto porque es uno de los primeros puntos de contacto que, junto con nuestro servicio y la comida en sí, contribuye a una mejor experiencia del cliente.
Esta solución se creó completamente en los servicios de Yandex Cloud, pero también podría construirse en AWS porque también tiene todos los servicios necesarios. Estoy designando servicios en términos de notación de AWS para la comodidad de los usuarios de AWS, lo que también debería ser claro para muchos usuarios de YC.
La arquitectura simplificada se ve así:
Los usuarios realizan pedidos a través de la aplicación móvil. En el sistema ERP, los pedidos se crean y procesan.
Luego, los pedidos se copian en el almacén de datos durante un proceso ETL una vez al día por la noche. Cada pedido incluye información sobre los productos solicitados, así como el identificador del cliente.
Los procedimientos SQL calculan las preferencias del usuario y la similitud del producto. A continuación se proporciona una descripción más detallada del cálculo. El cálculo produce dos colecciones en MongoDB con la siguiente estructura:
colección de preferencias de usuario
Teléfono: Utilizamos “teléfono” como identificador de usuario.
Platos relacionados
Última Fecha de Actualización. Fecha y hora del último recálculo
Ejemplo de un documento:
productoColección de similitud
platoId
Platos relacionados
lastUpdateDate: fecha y hora del último recálculo
Ejemplo de un documento
Implementamos las preferencias de los usuarios en función del historial de ventas ponderado, con prioridad en las ventas recientes. Considere el siguiente historial de ventas del usuario arbitrario:
Producto | Ventas | Cuando | Coeficiente de tiempo (1/meses) | Ventas ponderadas |
---|---|---|---|---|
A | 1 | este mes | 1 | 1 |
B | 1 | este mes | 1 | 1 |
C | 4 | Hace 1 mes | 0,5 | 2 |
A | 4 | Hace 1 mes | 0,5 | 2 |
B | 3 | hace 4 meses | 0,25 | 0,75 |
El usuario compró el producto B y el producto C cuatro veces. Sin embargo, debido a que la mayoría de las ventas del producto B se realizaron hace cuatro meses, damos prioridad a las ventas más recientes del producto C. Los productos se ordenan por ventas totales ponderadas, que son la suma de las ventas ponderadas de cada producto.
Producto | Ventas totales ponderadas | Rango |
---|---|---|
A | 3 | 1 |
B | 1,75 | 3 |
C | 2 | 2 |
El ejemplo anterior implica que el usuario prefiere el producto A al producto C y el producto C al producto B.
El número de pedidos en los que había pares de productos se usa para calcular la similitud del producto. El resultado se calcula por separado para cada mes, teniendo prioridad los meses más recientes. Como resultado, clasificamos productos similares para cada producto y los almacenamos en MongoDB, donde la identificación del producto es un índice para la colección.
La lista de recomendaciones de productos resultante combina las preferencias del usuario y productos similares y los ordena de acuerdo con alguna estrategia, que es una clasificación ascendente por rango. Como resultado, simplemente combinamos todas las listas de productos relacionados y las ordenamos. Calculamos el rango promedio para los productos que se repiten. Aquí hay un ejemplo:
Elegimos las siguientes métricas para medir la eficiencia de la venta cruzada:
El valor de pedido promedio (AOV) de los pedidos que incluían platos de venta cruzada fue más alto que el AOV de los pedidos que no lo incluían. La suma total de todos los productos en el pedido es el valor del pedido, que es cuánto paga el cliente por el pedido. Por lo tanto, esta métrica indica si los clientes pagan más por pedidos que incluyen platos de venta cruzada. Esta es la métrica clave porque el aumento en AOV es exactamente lo que esperamos de la venta cruzada.
Porcentaje de bienes agregados de la sección de venta cruzada en el total de bienes vendidos . Esta es una métrica secundaria que está fuertemente influenciada por la naturaleza de los productos vendidos, así como por la estrategia de venta cruzada. Considere una tienda de comercio electrónico de productos electrónicos que realiza ventas cruzadas de suplementos de bajo costo, como maletas y cables de carga, con artículos más caros en el carrito, como teléfonos inteligentes y computadoras portátiles. Muchos complementos se pueden vender de forma cruzada a un artículo principal en este caso, y la métrica puede superar el 50 %. Aunque nuestro ejemplo no incluye una amplia variedad de suplementos, esta métrica demuestra cómo la venta cruzada afecta la estructura final del carrito.
Porcentaje de pedidos que contienen platos de venta cruzada . Esta es otra métrica secundaria que muestra la "popularidad" de la venta cruzada, o con qué frecuencia los clientes compran productos recomendados de venta cruzada.
El conjunto de datos a continuación contiene datos de pedidos impersonales recopilados desde diciembre de 2022 hasta enero de 2023 en una de las ciudades de operaciones de MnogoLososya.
https://github.com/alexchrn/cross-sell/blob/main/orders.csv
El conjunto de datos se compila a partir de una variedad de fuentes, incluida AppMetrica (eventos de agregar al carrito) y el sistema ERP (estados de pedidos y pagos, sumas de descuentos y pagos).
Estructura del conjunto de datos:
Así que aquí están los valores de las métricas (derivados del conjunto de datos anterior usando python).
El porcentaje de platos agregados de la sección de venta cruzada en el total de platos comprados: 3.97%
El porcentaje de pedidos que contienen platos de venta cruzada: 10,46%
AOV de pedidos que incluían platos de venta cruzada en comparación con AOV de pedidos que no:
Como se puede observar, los pedidos con platos de venta cruzada tienen un AOV mayor con una diferencia de 565 RUB. La cantidad promedio de platos en dichos pedidos también es mayor, lo cual es razonable si se tiene en cuenta que el único objetivo de la venta cruzada es incentivar al cliente a agregar más platos a su carrito.
¿Es significativa la diferencia de 565? Podemos usar una prueba t para ver si esta diferencia se debe al azar. La biblioteca Python scripy tiene un método para esto. Esta es una prueba para la hipótesis nula de que 2 muestras independientes tienen valores promedio (esperados) idénticos (1).
Por lo tanto, el valor p, o la probabilidad de que la hipótesis nula sea verdadera, es extremadamente bajo y rechazamos la hipótesis nula incluso al nivel de significancia del 99%. En otras palabras, es casi seguro que la notable diferencia en el valor medio de los pedidos no es una coincidencia, y los pedidos con comidas de venta cruzada generan más ingresos.
La venta cruzada puede ser una herramienta eficaz para aumentar el valor medio de los pedidos, incluso con técnicas sencillas de filtrado colaborativo. También se puede implementar con relativa facilidad desde un punto de vista técnico, gracias a los servicios sin servidor de AWS y otros proveedores de la nube, como se muestra en este artículo.
Materiales relacionados: