02-07-2013

Creando un sistema de recomendación de contenidos para macrojuegos

Contenido recomendado

Como recién ascendido a 'Product Owner', manager de producto o como lo llamen hoy decidí que sería buena idea crear esta característica en la web. Ésta en concreto la desarrollé yo mismo.

Cuando tienes un sitio web con muchos usuarios que tienen ya cuenta y se logean, empiezas a grabar algunas de sus acciones por el sitio, de esta manera tendrás el poder de crear cosas como el contenido personalizado. Hoy día las webs grandes como Youtube tienen ya esto, además utilizan inteligencia artificial en el proceso. Yo no usé IA pero hice un algoritmo bastante funcional.

El algoritmo (sin IA)

Para el algoritmo simplemente comprobé con algunas consultas SQL cuales eran los juegos con los que cada usuario se divertió más. Después, me dispuse a extraer de la base de datos los juegos recomendados para cada uno de estos juegos, resulta que ya teníamos otro algoritmo que creaba recomendaciones basadas en como era cada juego, sin considerar los juegos que ese usuario había jugado. Así pues, junté las listas de juegos y filtré los que ya habían sido jugados por el usuario y voilà. Un sistema de recomendaciones barato, eficiente y sin inteligencia artificial.

Un ejemplo de código relacionado con el proyecto

Código de ejemplo

Preparando los datos, denormalizando y grabando en la base de datos

Como el algoritmo era costoso decidí ejecutarlo diariamente mediante cron y solo para usuarios que se logearon en los últimos meses. Por tanto, era rápido de ejecutar.

Lo único que quedaba era grabar esa lista de juegos en la database. Así pues, escribir unas consultas de SQL extra en PHP remataron el trabajo.

Conclusión

A veces tus usuarios se atascan y no saben que hacer en tu web, darle spistas y recomendaciones de contenido que se alinea con sus gustos es una buena característica que todo sitio más o menos grande debería tener.

Aviso legal: Este proyecto es confidencial. Por lo tanto, no puedo proporcionar acceso al código fuente completo, pero puedo compartir imágenes o pequeños fragmentos de código con fines de demostración, con el permiso del propietario. Sin embargo, si es necesario para una entrevista, podría ser posible otorgar acceso al repositorio privado donde se encuentra alojado este código o una copia del mismo.
  • php
  • mysql
  • web-development
  • private-project
  • company:panaworld

Vías de Contacto

¿Quieres comentarme algo? Soy de Barcelona. A continuación, te dejo varias opciones para contactar conmigo.

Estado: Estoy trabajando 100% Remoto como Full Stack Developer, pero estoy abierto a oportunidades que me ayuden a hacer crecer mi carrera.

contacto@danieldev.es

Esta PWA ha sido desarrollada por Daniel Domínguez Rubio usando tecnologías como: React, Gatsbyjs, GraphQL, Nodejs, AWS S3 y Cloudfront.

v1.11.0