en APIs que usamos

Recomendaciones Inteligentes usando Strands

Si habéis estado atentos a los últimos lanzamientos de minube, ya sabréis que esta semana hemos lanzado un nuevo servicio de recomendaciones personalizadas. Ya comentábamos en  el blog oficial que para esto usamos la tecnología de Strands. Pero queríamos aprovechar este nuevo lanzamiento, para comentar cómo ha sido la integración desde el punto de vista tecnológico, y además para estrenar una nueva sección en nuestro blog : «APIs que usamos».

Strands Recommender es uno de los productos de la compañía, que ofrece un servicio de cálculo de recomendaciones personalizadas basadas en la actividad de los usuarios.

La integración ha sido realmente sencilla e intuitiva.

1. Generación de catálogo

El primer paso de cara a la integración fué crear un archivo XML con el catálogo completo de productos (items) que quieres recomendar. En nuestro caso, un catálogo de rincones. La definición del XML que propone Strands es bastante permisiva, y nos permiten definir todos los campos que necesitemos adaptados a nuestro producto. Posteriormente se nos permite hacer matching entre los campos estandar de Strands y los nuestros. Podéis consultar las especificaciones y todo lo relacionado con la generación de catálogos en su documentación, pero os pongo un ejemplo (extraido de la documentación) para que os hagáis a la idea :

<item>
<title>Pulp Fiction</title>
<link>http://www.mymovies.com/film?id=564</link>
<id>564</id>
<price>18</price>
<genre>Crime, Comedy, Dark</genre>
<director>Quentin Tarantino</director>
<actor>John Travolta</actor>
<actor>Samuel L.Jackson</actor>
<actor>Uma Thurman</actor>
<actor>Ving Rhames</actor>
<tag>Hit men</tag>
<tag>Mobsters</tag>
<tag>Violence</tag>
</item>

Después de cargar nuestro catálogo en su sistema (si es muy grande podemos hacerlo por FTP), podemos generar una url en nuestro sistema, que genere las actualizaciones de nuestro catálogo, y Strands Recommender irá actualizando el catálogo diariamente.

2. Captura de Eventos

La captura del comportamiento de los usuarios se realiza a través de eventos. Lo primero es estudiar bien el comportamiento de nuestros usuarios y definir qué eventos clave definen bien la muestra de interés de un usuario por un determinado «item», y asociarlos con los eventos que Strands ofrece en su catálogo de eventos. Hay acciones que pueden ser activas (me guardo un rincón como favorito), o pasiva (visito un rincón). Strands Recommender captura todos los eventos que hayamos definido, y nos permite aplicar un «peso» determinado a cada evento. De manera que determinados eventos se tengan en cuenta mucho más que otros a la hora de calcular la recomendación.
Para enviar los eventos, usamos un API REST en el que tenemos un tipo de llamada por tipo de evento en el que enviaremos el identificador de usuario y el identificador del item para el que lanzamos el evento. Os adjunto un ejemplo de llamada :

http://bizsolutions.strands.com/webservice/tracking/visited.sbs?customerId=**********&itemId=195&userId=11&needResult=0

3. Solicitud de Recomendaciones

Llegados a este punto, todo el trabajo duro está hecho, ya sólo queda pedir recomendaciones. Para ello tendremos otras funciones disponibles en el API (muy parecidas a las de captura de eventos), que al pasarle el identificador de usuario y algunas reglas de filtrado (que en nuestro caso definirían el destino, categoría, …) nos devolverán un XML con el listado de itemsId que se han calculado recomendados para ese usuario.

Como veis extremadamente sencillo. El mayor trabajo viene luego, a la hora de ajustar la configuración del motor, para que se adapte lo mejor posible a las necesidades de nuestro proyecto.

Strands Recomender no sólo nos permite obtener recomendaciones de items para usuarios, sino que hay muchas otras posibilidades de integración (Usuarios con gustos a fines, Items relacionados con otros Items,…). Seguro que en el futuro ampliaremos nuestra integración y podremos ofreces más y mejores recomendaciones para viajeros.
Desde aquí me gustaría dar las gracias a todo el equipo de Strands  por el excepcional soporte que nos han dado, la ayuda y seguimiento totalmente personalizado. Desde sus ingenieros Javier, Hector, Luz, Juan Antonio,Jaime… hasta Jesús Pindado VP de Strands. Si tenéis algún proyecto y estáis pensando en ofrecer recomendaciones personalizadas, échale un ojo a este magnífico proyecto, porque por un precio muy asequible puedes conseguir un valor añadido que supera con creces el gasto. No nos pagan ni nos hacen descuento por decir esto, que conste jejeje, esto se consigue ofreciendo un buen producto y un gran soporte.