Proyecto tipo: Recomendador para app de relatos 2 (usando k-means)

PROBLEMA

El cliente solicita la elaboración de dos apartados:

  • Sistema de recomendación basado en Machine Learning
  • Sistema de detección de tendencias

En la entrevista con el cliente se llega a la conclusión de que lo que en el fondo quiere es aumentar el tiempo de uso de la app y la recurrencia de uso: la retención.

Además, necesita comenzar a almacenar datos para posteriormente explotarlos.

PROPUESTA

Para el primer problema empezaría por implementar algunas estrategias que no requieren servicios externos, para así comenzar a tener datos y ver cuales de ellas son las que mejor funcionan. Por ejemplo:

  • Al acabar una historia proponer de 1 a 3 recomendaciones: una random, otra random de la misma categoría, otra random del mismo autor.
  • Si se incluyesen tags para afinar la categorización de las historias, incluiría una cuarta recomendación en el punto anterior.
  • Cuando se abandona una historia preguntaría si se quiere guardar el progreso (y así saber si hay interés en ella).
  • Gestionar el progreso que se lleva en cada historia.
  • A las 6h, 12h, 24h, 48h del último uso lanzaría una notificación con texto del último párrafo leído de la última historia si se dejó a medias, o el primero de una recomendación del tipo que mejor esté funcionando para ese usuario (por categoría, autor, random, o tags si se implementan).
  • Incluir fotos de los personajes y una vista de su perfil.

Todo esto se puede gestionar con facilidad desde la propia aplicación, y entendiendo que la empresa dispone de desarrolladores para esa parte, por el momento no se presupuestará.

Por petición del cliente se presupuesta la elaboración de un sistema de recomendación sin esperar a tener información previa de si las recomendaciones incrementarán sustancialmente el tiempo de uso y la recurrencia de la aplicación.

El sistema de recomendación estará basado en el algoritmo de machine learning k-means que busca los vecinos que se parecen al usuario actual para determinar cuáles son las historias que le podrían gustar, y es uno de los principales algoritmos empleados en los sistemas de recomendación.

patos k-means

Tal como hablamos en la visita realizada, es un sistema más similar al de Amazon que al de Netflix, ya que se tiene en cuenta el histórico del usuario individual. Este sistema tendrá en cuenta:

  • Relatos que un usuario ya ha visto, para no volver a mostrarlos.
  • Relatos que un usuario ha acabado, entendiendo que le han gustado.
  • Relatos que un usuario ha abandonado, entendiendo que le han disgustado.

En base a esa información, buscará a los usuarios a los que les haya gustado y disgustado los mismos relatos que al usuario en cuestión, y en base a ellos obtendrá otros relatos que les hayan gustado y que el usuario actual no haya leído.

El algoritmo k-means es un algoritmo colaborativo similar al que usa Amazon, pero dado el bajo número de elementos del catálogo (cientos de millones frente a cientos) no se precisa una optimización de este para poder aplicarlo.

Para mitigar la falta de información con usuarios nuevos, se valorarán también otras variables que se pueden obtener desde el momento de instalación de la aplicación como son el modelo del terminal, la compañía proveedora de conexión, etc.

El sistema quedará preparado para que cuando se introduzcan valoraciones realizadas de manera consciente por los usuarios (like/dislike o puntuación), los cambios a realizar sean los menos posibles. En concreto, sólo habría que cambiar el servicio de ETL que convierta los eventos capturados en la matriz de votos.

Las tareas y componentes necesarios para este apartado, son los que constan en la tabla de precios como Comp. 2, puesto que al alimentarse del otro, debería de implementarse en segundo lugar. Los componentes principales de este sistema serán:
Servicio ETL que transforme la información de los eventos recibidos y la obtenida del catálogo de relatos en una matriz de valoraciones.

  • Servicio de perfiles de usuario en base a variables del sistema.
  • Servicio de preprocesado de matriz de valoraciones.
  • Servicio de recomendación.

Para la captación de datos para su explotación, los principales actores son 3:

  1. Google Analytics. El problema que tiene es que en el momento que se quieren exportar datos se necesita la versión premium que tiene un coste de $150.000 USD al año.
  2. Mixpanel. Una solución de análisis que dispone de APIs para integrarla con cualquier sistema y poder exportar los datos. Su precio es de $999 USD al año. Es una buena solución siempre que no se vuelva poco flexible, ya que a la larga te tienes que amoldar a sus posibilidades.
  3. Una solución a medida que permita guardar cuantos datos se desee en el formato que se prefiera, para que posteriormente se les puedan dar distintos tratamientos para obtener distintas informaciones ya sean en modo de servicio para proveer de nuevas funcionalidades a la aplicación, informes, datos tratados para su venta. Es una buena solución en cuanto a relación flexibilidad y coste.

Dado que las dos primeras opciones sólo requieren realizar modificaciones en la aplicación, se presupuestará sólo la tercera.

A partir de tener los datos almacenados mediante cualquiera de los sistemas, posteriormente se podrán tratar para cubrir cualesquiera necesidades surjan:

  • Obtener perfil de uso y progreso de un usuario.
  • Obtener recomendaciones a medida de un usuario.
  • Creación de informes.
  • Búsqueda de patrones de comportamiento.
  • Envío de notificaciones personalizadas.
  • Etc.

CONCEPTO

Elaboración de un servicio que reciba datos para identificación del dispositivo/usuario y una colección de eventos (1..N) para almacenar todas las acciones que haya realizado el usuario. El paso de datos se hará en formato JSON de tal modo que la definición de la estructura pueda ir variando con el tiempo sin necesidad de modificar el servicio.

El hecho de permitir mandar varios eventos, permitirá que no se pierda información cuando la aplicación se use offline. Además permitirá no estar realizando comunicaciones constantes si por ejemplo se decide registrar cada uno de los “scroll” que se hacen en las historias para seguir leyendo, pudiendo guardarse cada 10 scrolls por ejemplo.

A petición del cliente se usaría Azure.

Se propone para la computación usar Azure Functions, ya que permite que el sistema escale de manera automática y no pagar nada cuando no hay uso del servicio.

Para el almacenamiento se sugiere el uso de Azure Cosmos DB, una base de datos orientada a documentos, que permite almacenar cualquier tipo de estructura de datos, pudiendo cambiarse esta sobre la marcha, permitiendo así introducir nuevos datos que se haya visto con el uso que pueden ser útiles.

PRECIO
Tarea Comp. Precio
1 Preparación de sistemas 1 400,00€
2 Creación servicio 1 1.400,00€
3 Pruebas de carga 1 300,00€
4 Documentación 1 300,00€
5 Migración a sistemas cliente 1 400,00€
Subtotal 1 2.800,00€
6 Preparar BBDD 2 400,00€
7 Servicio ETL 2 1.200,00
8 Servicio perfiles 2 900,00
9 Servicio de preprocesado 2 1.800,00
10 Servicio de recomendación 2 1.500,00
Subtotal 2 5.800,00€
TOTAL 8.600,00€
TIEMPOS

El componente tiene una estimación de 1 (un) mes. El segundo componente tiene una estimación de 2 (dos) meses, si bien se podría acortar el tiempo de desarrollo a la mitad incrementando el presupuesto de dicho componente en un 30%. El tiempo total de desarrollo del proyecto, por tanto, sería de 3 (tres) meses.

Nota aclaratoria:

Este proyecto tipo, es un ejemplo de proyecto que se ha realizado o se podría realizar. En ningún caso tiene validez como presupuesto real y sólo pretende documentar las distintas posibilidades que existen.

Actualmente, con los cambios que ha habido en cuanto a las posibilidades existentes, la propuesta habría sido distinta.

Se han omitido nombres de empresas y productos.

Por favor, si tuviese necesidad de algo similar, no dude en ponerse en contacto.

Proyecto Tipo: Mostrar mapas gratis, instalación de Nominatim

PROBLEMA

El cliente tiene la necesidad de mostrar mapas gratis de centro américa.

En la empresa han valorado las distintas opciones y creen que la mejor es montar un servidor con Nominatim (el motor de OSM *) para servir mapas de Open Street Map.

Han intentado instalarlo varias veces sin éxito, probando sobre distintas versiones de Linux (CentOS, Ubuntu 16 y Ubuntu 18).

CONCEPTO

Se trata de montar un servidor con el servicio Nominatim y mapas de América Central. Para lo cual el cliente proporcionará un servidor con las siguientes características mínimas:

  • Intel core i3 4170, 1 TeraByte de disco duro y 8 GigaByte de RAM
  • Ubuntu 18.04
  • Conexión a Internet estable
  • Configurado para estar siempre encendido
  • Con conexión remota habilitada
  • Credenciales de usuario con capacidad para hacer operaciones de root

Mientras el cliente no indique lo contrario, los mapas que se instalarán son los de América Central de Geofabrik.

Se montará el servicio en un entorno virtualizado con redirección NAT, con actualización de mapas automática y con instrucciones básicas sobre como arrancarlo y manejarlo.

Opcionalmente, se guiará al cliente en la preparación del servidor y se elaborará un tutorial con todos los pasos necesarios para que el cliente pueda replicar la instalación de manera independiente, que no se ofrece de manera exclusiva al cliente quedando los derechos de uso y explotación reservados al proveedor.

PRECIO

Tarea Opcional Importe
1 Preparación del servidor 400€
2 Instalación de Nominatim No 1.000€
3 Instalación de mapas de américa central 400€
4 Tutorial 200€
Total 1.000€/2.000€

TIEMPO

Dado que la obtención de resultados favorables de este trabajo depende de muchos factores externos como la conexión a Internet o las capacidades de la máquina que se use de servidor, si no se lograse un resultado favorable en el tiempo máximo de una (1) semana, se devolvería todo el dinero anticipado.

Nota aclaratoria:

Este proyecto tipo, es un ejemplo de proyecto que se ha realizado o se podría realizar. En ningún caso tiene validez como presupuesto real y sólo pretende documentar las distintas posibilidades que existen.

* Como bien indica @LuisE2 por Twitter, Nominatim es un geocoder (hace la conversión entre direcciones y coordenadas y viceversa). En este caso se mezclan los dos términos ya que el cliente así lo hacía, con ánimo de facilitar el entendimiento. Lo que querían era mostrar mapas y buscar por dirección. Tiene razón Luis en que es uso incorrecto del lenguaje.

Por favor, si tuviese necesidad de algo similar, no dude en ponerse en contacto.

Tecnología útil que incluya a todos

A veces, cuando nos paramos a ver el mundo, nos damos cuenta de que hay problemas que hoy en día son fáciles de resolver pero que paradógicamente siguen sin estar resueltos. Normalmente, la raiz de que esto sea así es que nadie con los conocimientos adecuados se ha enfrentado al problema. La tecnología es útil cuando resuelve problemas, pero para resolver problemas hay que saber que existen.

Top4ELA

Hace un par de semanas fui invitado por la Fundación Luzón a una especie de hackathon. En él se pretendía conseguir soluciones tecnológicas a los problemas que tienen en su día a día un colectivo con muchas dificultades. Ellos se encargaron de poner a gente con conocimientos de tecnologías dispares enfrente de los problemas que rodean a la ELA (Esclerosis Lateral Amiotrófica).

El evento fue organizado conjuntamente con Samsung España, quienes pusieron todo de su parte para que estuviésemos cómodos y centrados en el trabajo que teníamos por delante. Además nos prestaron sus últimos juguetes para que pudiésemos validar todo lo que planteásemos . Fueron de mucha utilidad todos, desde las cámaras 360, hasta su nuevo asistente virtual Bixby o sus teles con el nuevo sistema operativo Tizen.

La fundación trabaja para que la vida de los pacientes de ELA pueda ser mejor mientras se encuentra el origen de la enfermedad y esperemos que una cura.

La ELA es una enfermedad muy dura porque va destruyendo la capacidad motora de los pacientes mientras su cabeza sigue funcionando a la perfección. ¿Alguna vez habéis tenido la sensación de que vuestro cuerpo se ha dormido pero vuestro cerebro no? ¿De que os enteráis de todo lo que pasa a vuestro alrededor pero no tenéis modo de reaccionar? Imaginad que fuese así constantemente.

En las fases avanzadas de la enfermedad, los pacientes sólo pueden mover los ojos. Nada más.

La realidad de la ELA

Así, lo primero de lo que se encargó la fundación fue de ponernos en contacto con la realidad de la enfermedad. Pero esta no es sólo la de los pacientes, es también la de sus médicos, sus familias o sus cuidadores. Ejemplos de esto fueron Carlos Espada (Socio de Everis y enfermo de ELA a quien podéis ver en una charla a continuación), María Bestue (neuróloga que trabaja con pacientes de ELA), los hijos y la mujer de Francisco Luzón (el fundador de la fundación) o Angélica y Alexandra (dos de las cuidadoras de Carlos).

Los problemas de la ELA

La siguiente parte del trabajo, que gracias a la coordinación de Mario fue muy efectiva, se centro en identificar los problemas de cualquiera de estos actores que creyesemos que podríamos solucionar de un modo sencillo.

Uno de los problemas más graves de esta enfermedad es que convierte a los pacientes en grandes dependientes que necesitan hacer una inversión muy grande para vivir. Además, en la mayoría de los casos, estos dejan de poder realizar los trabajos que realizaban antes. Este es un problema muy grande debido a que dificulta el acceso a soluciones que podrían mitigar otros problemas más «pequeños». Siempre he creído que las necesidades de todos deben de cubrirse desde las administraciones públicas, aunque mientras esto se consigue es de agradecer el trabajo de fundaciones como esta.

En algunos sitios se está intentando resolver ese gran problema, como en Japón dónde han creado un bar en el que los camareros son robots controlados por gente que sufre algún tipo de parálisis.

En nuestro caso nos quedamos con 4 problemas que creíamos que podrían tener alguna solución en el corto plazo:

  1. El desconocimiento que hay de la enfermedad.
  2. La perdida de identidad de los pacientes.
  3. La dificultad de comunicación de los pacientes (haciendo sólo uso de sus ojos).
  4. La fragmentación de los datos clínicos de los pacientes.
Soluciones

Cada uno de estos problemas, y sus posibles soluciones dan para largo y tendido.

Yo trabajé en el cuarto de estos, de la mano de dos cracks de los datos que ya han hecho público su resumen y análisis: Ana y Josep; y con María Bestue que nos ayudó tremendamente a entender las implicaciones de este problema básico.

En mi caso, voy a dejar para más adelante la creación de un «proyecto tipo» con un análisis más completo del problema y la solución que planteamos, que no sólamente afecta a los pacientes de ELA sino que a cualquiera nos podría resultar de utilidad en un momento dado, como cuando me estuve pegando con Sanitas por conseguir todos mis datos.

Para acabar, como punto y seguido, os dejo con un vídeo de César de La Hora Maker, que creo que resume muy bien el fin de semana además de lograr otros objetivos.

Proyecto tipo: AddOn para Gmail

PROBLEMA

El cliente ha visto un post mío sobre la creación de un AddOn para Gmail para personalizarlo y quiere una propuesta de que se podría hacer para ayudar a su empresa similar al software X que ahora tienen.

PROPUESTA

Alguno de los puntos a tener en cuenta.

  • No se puede meter cualquier cosa dentro de un AddOn para Gmail
  • El AddOn para Gmail sólo existe en el contexto de un hilo de correo específico

Por esto, mi propuesta sería hacer algo lo que os ofrece X, pero sólo para las personas que estén en el hilo de correo.

Para las gráficas, habría que meterlas como imágenes, y que sean completamente anónimas, pues las imágenes tienen que ser públicas para poder incoporarlas a un add-on. Además, como en cada correo serían distintas, habría que generarlas al vuelo (para esto se podría usar Google Graph o hacer un servicio a medida).

Para darle más valor, intentaría introducir información que ahora no os proporcione X porque no tenga sentido de manera agrupada, pero que sí tenga sentido en correos individuales. No sé que feedback tenéis de los usuarios de X, pero por ejemplo se me ocurre que se podrían mostrar semáforos o algo así para saber si se está respondiendo pronto (antes de la media) o tarde, o la hora a la que se calcula que se recibirá respuesta.

Para poder tener algo de referall, yo permitiría incluir en el texto que se esté escribiendo información estadísitica, y así quienes recepcionen el mensaje verán la información dada por este AddOn para Gmail fomentando que tal vez se conviertan en usuarios.

Yo creo que funcionaría mejor tener todo en una única pantalla, pero eso se puede probar y hacer lo que se vea en las estadísticas de uso.

Esto es lo que creo que tiene sentido a la hora de hacer un AddOn para Gmail, y no replicar lo que ya está en X. Si queréis replicar eso, como hablamos, creo que sería mejor que optaseis por una app como la que ya tenéis.

Nota aclaratoria:

Este proyecto tipo, es un ejemplo de proyecto que se ha realizado o se podría realizar. En ningún caso tiene validez como presupuesto real y sólo pretende documentar las distintas posibilidades que existen.

Actualmente, con los cambios que ha habido en cuanto a las posibilidades que dan los add-on, la propuesta habría sido distinta.

Se han omitido nombres de empresas y productos.

¿Cómo conseguir que una Inteligencia Artificial coloree las fotos del abuelo?

Cuando hablamos  de Inteligencia Artificial, es fácil pensar en sistemas muy complejos y caros. Sin embargo, lo más complejo es crear un modelo para resolver una clase de problemas. Ese modelo, una vez creado, es fácil de aplicar para solucionar un problema concreto usando un poco de imaginación. Hoy veremos como usar un modelo creado por otra persona, para nuestro objetivo: colorear las fotos que tengamos en blanco y negro de nuestros abuelos.

Imagen en blanco y negro coloreada por una Inteligencia Artificial
De una postal antigua, republicada en eldiariomontanes.es

Para la creación de un modelo, hay que saber mucho del ámbito de aplicación, hay que tener una buena base de matemáticas estadísticas y hay que conocer los diferentes algoritmos e invertir un buen tiempo probando cosas distintas. Mucha gente está creando distintos modelos, ya sea para practicar, para investigar o con otros objetivos.

Algunos de estos modelos son liberados por sus creadores, como el que nos ocupa hoy:

DeOldify es un proyecto basado en Deep Learning para colorear y restaurar imágenes antiguas. Su creador (Jason Antic) lo liberó bajo licencia MIT, lo cual nos permitirá hacer casi cualquier cosa con él.

Por tanto, para conseguir nuestro objetivo de hoy, que no es ni más ni menos que colorear las fotos antiguas de nuestros abuelos que tengamos por casa, podremos hacer uso de este proyecto.

Pero ¡ojo! También podríamos usarlo para montar un servicio online de coloreado automático de imágenes antiguas a razón de euro cada una, o para colorear las imágenes captadas por una cámara de visión nocturna (de las baratas que se ven en verde y negro).

¿Qué podemos esperar de esta Inteligencia Artificial?

En mis pruebas, que podéis ver en la foto de cabecera o en el mini-hilo que parte del siguiente twit, podéis ver los resultados con algunas fotos muy distintas. Probablemente, trabajando un poco sobre el modelo para afinar algunos puntos o incluso reentrenándolo (siguiendo los pasos de Jason) con imágenes similares a sobre las cuales queremos aplicar el modelo, podríamos obtener resultados mejores aún.

¿Cómo podemos usar esta Inteligencia Artificial?

Cuando estuve haciendo mis pruebas (hace un mes aprox.), y dado que quería jugar mucho, opté por instalar todo lo necesario en mi máquina. En ese momento no es algo que habría aconsejado porque no era trivial, pero ahora parece que con unas pocas instrucciones lo puedes tener funcionando en cualquier lado. ¡Ojo! No las he probado, pero Jason dice que en su ordenador funciona ;).

git clone https://github.com/jantic/DeOldify.git DeOldify
cd DeOldify
conda env create -f environment.yml

#Then run it with this:

source activate deoldify
jupyter lab

Sin embargo hay un modo mucho más sencillo y es ejecutarlo online partiendo del notebook subido a la plataforma de Google Colab.  Ten en cuenta que es una plataforma que no está pulida del todo y que no siempre funciona bien, por lo que si no te funciona a la primera: no te desesperes.

Los pasos serían:
  1. Visita la url.
  2. Abajo, donde ves las fotos de Lincoln y demás, cambia los links de los wget por links a las fotos que quieras (tienen que estar en internet en una url accesible a cualquiera, por ejemplo puedes compartirlas mediante un enlace de Google Drive). Si lo necesitases podrías copiar más bloques para procesar más fotos: un wget y un vis.plot_transformed_image por imagen.
  3. Ejecuta la opción de menú Runtime>Run all.
  4. Cuando el script llegue a la mitad (al bloque de auth.authenticate_user…) te pedirá que sigas un link y copies un código para autenticarte con una cuenta de Google. Esto es porque necesita descargarse los pesos que se han obtenido en los entrenamientos del modelo para que la red neuronal pueda usarlos con las nuevas fotos, cuando te lo instalas en tu equipo es un paso que se puede saltar, pero con este script de Colab es necesario.
  5. Espera a que procese las imágenes.
  6. Comparte conmigo tus resultados ya sea con un comentario, un twit o lo que veas.

Con estos pasos tan sencillos, obtendrás unas imágenes antiguas que antes sólo tenías en blanco y negro, coloreadas por una Inteligencia Artificial. Cuando tu familia te pregunte como lo has hecho, puedes hablarles de Inteligencia Artificial, Deep Learning, etc. o bien puedes usar el comodín de «magia de informático».

Tech roundup 1: a journal published by a bot

Read a tech roundup with this week’s news that our powerful bot has chosen: blockchain, AI, development, corporates and more.

Gooooooood morning, Y’all!!! Hey, this is not a test, this is a tech roundup. Time to rock it from the Delta to the DMZ.

AI, bots and robots

Blockchain and decentralization

Woman computer scientist of the week
Carolina Cruz-Neira is a Spanish-Venezuelan-American computer engineer, researcher, designer, educator, and a pioneer of virtual reality (VR) research and technology. She is known for inventing the CAVE automatic virtual environment. She previously worked at Iowa State University (ISU), University of Louisiana at Lafayette and is currently the director of the Emerging Analytics Center at the University of Arkansas at Little Rock.

Cloud and architecture

Development and languages

Quote of the week

The best code is no code at all.

Enterprises

Other news

[jetpack_subscription_form]

Proyecto tipo: Recomendador para app de relatos

PROBLEMA

El cliente solicita la elaboración de dos apartados:

  1. Sistema recomendador basado en Machine Learning
  2. Sistema de detección de tendencias

En la entrevista con el cliente se llega a la conclusión de que lo que en el fondo quiere es aumentar el tiempo de uso de la app y la recurrencia de uso: la retención.

Además, necesita comenzar a almacenar datos para posteriormente explotarlos.

Actualmente el volumen de relatos es de aproximadamente 300 y se espera un crecimiento de aproximadamente uno al día.

PROPUESTA

Para el primer problema (el recomendador) empezaría por implementar algunas estrategias que no requieren servicios externos, para así comenzar a tener datos y ver cuales de ellas son las que mejor funcionan. Por ejemplo:

  • Al acabar una historia proponer de 1 a 3 recomendaciones: una random, otra random de la misma categoría, otra random de el mismo autor.
  • Si se incluyesen tags para afinar la categorización de las historias, incluiría una cuarta recomendación en el punto anterior.
  • Cuando se abandona una historia preguntaría si se quiere guardar el progreso (y así saber si hay interés en ella).
  • Gestionar el progreso que se lleva en cada historia.
  • A las 6h, 12h, 24h, 48h del último uso lanzaría una notificación con texto del último párrafo leído de la última historia si se dejó a medias, o el primero de una recomendación del tipo que mejor esté funcionando para ese usuario (por categoría, autor, random, o tags si se implementan).
  • Incluir fotos de los personajes y una vista de su perfil.

Todo esto se puede gestionar con facilidad desde la propia aplicación, y entendiendo que la empresa dispone de desarrolladores para esa parte, por el momento no se presupuestará.

Para la captación de datos para su explotación, los principales actores son 3:

  1. Google Analytics. El problema que tiene es que en el momento que se quieren exportar datos se necesita la versión premium que tiene un coste de $150.000 USD al año.
  2. Mixpanel. Una solución de análisis que dispone de APIs para integrarla con cualquier sistema y poder exportar los datos. Su precio es de $999 USD al año. Es una buena solución siempre que no se vuelva poco flexible, ya que a la larga te tienes que amoldar a sus posibilidades.
  3. Una solución a medida que permita guardar cuantos datos se desee en el formato que se prefiera, para que posteriormente se les puedan dar distintos tratamientos para obtener distintas informaciones ya sean en modo de servicio para proveer de nuevas funcionalidades a la aplicación, informes, datos tratados para su venta. Es una buena solución en cuanto a relación flexibilidad y coste.

Dado que las dos primeras opciones sólo requieren realizar modificaciones en la aplicación, se presupuestará sólo la tercera.

A partir de tener los datos almacenados mediante cualquiera de los sistemas, posteriormente se podrán tratar para cubrir cualesquiera necesidades surjan:

  • Obtener perfil de uso y progreso de un usuario.
  • Obtener recomendaciones a medida de un usuario.
  • Creación de informes.
  • Búsqueda de patrones de comportamiento.
  • Envío de notificaciones personalizadas.
  • Etc.

CONCEPTO

Elaboración de un servicio que reciba datos para identificación del dispositivo/usuario y una colección de eventos (1..N) para almacenar todas las acciones que haya realizado el usuario. El paso de datos se hará en formato JSON de tal modo que la definición de la estructura pueda ir variando con el tiempo sin necesidad de modificar el servicio.

El hecho de permitir mandar varios eventos, permitirá que no se pierda información cuando la aplicación se use offline. Además permitirá no estar realizando comunicaciones constantes si por ejemplo se decide registrar cada uno de los “scroll” que se hacen en las historias para seguir leyendo, pudiendo guardarse cada 10 scrolls por ejemplo.

A petición del cliente se usaría Azure.

Se propone para la computación usar Azure Functions, ya que permite que el sistema escale de manera automática y no pagar nada cuando no hay uso del servicio.

Para el almacenamiento se sugiere el uso de Azure Cosmos DB, una base de datos orientada a documentos, que permite almacenar cualquier tipo de estructura de datos, pudiendo cambiarse esta sobre la marcha, permitiendo así introducir nuevos datos que se haya visto con el uso que pueden ser útiles.

PRECIO*

El precio total es de 2.800€.

* Se omite el desglose en componentes por simplicidad.

TIEMPOS

El proyecto tiene una estimación de tiempo de entrega de 1 (un) mes, desde la fecha de inicio de los trabajos.

Nota aclaratoria:

Este proyecto tipo, es un ejemplo de proyecto que se ha realizado o se podría realizar. En ningún caso tiene validez como presupuesto real y sólo pretende documentar las distintas posibilidades que existen.

Por favor, si tuviese necesidad de algo similar, no dude en ponerse en contacto.