Filtro por tipo de Productos, Productos Vistos y ensenar una lista de productos que podrian gustar al cliente segun sus gustos

Hola me gustaria agregar a mi aplicacion 3 cosas tal vez me ayudan o me ensenan un video donde se explique.
PUNTO 1- Filtrar tipo de Producto, mi aplicacion filtra productos por Categorias, Ejemplo cuando el usuario toca la categoria de electronicos le muestro lo que tenga relacion con electronicos, pero en electronicos a muchas cosas como por ejemplo, audifonos, televisores, telefonos, accesorios etc,etc y etc, y pues claro que tengo mi lista de esta categoria, como puedo hacer para poder filtrar estos productos por categorias, por ejemplo si el usuario entra a la categoria de electronicos como hago para que con otra lista de TIPO DE PRODUCTOS toque una y solo le filtre los productos que sean de ese tipo de producto por ejemplo si solo quiere ver celulares solo mostrarles los productos que en la base de datos este guardados como celulares, me explico? bueno eh visto app que filtran los comercios por el tipo de producto que ofecen si son de pizza o de cafe etc etc, pero quiero poder mostrar los tipos de productos segun la categoria y luego con esta categoria mostrar los tipos de productos de esta categoria y que cambien estos por el tipo de productos que el cliente quiere encontrar, ayuda, no se como estructurarlo en mi base de datos, no se si tengo que usar otro addcollection to UIA o que hacer, es probable que ya exista un video tal vez alguien tiene la amabilidad de compartir el Link, si hacen tutorial estaria increible.

PUNTO DOS
Como puedo crear una lista de productos que el usuario ya hay visto? Esto supongo que se puede hacer cuando el usuario entre a un producto guardar la informacion el producto o el id del producto en la Base de Datos del telefono y luego crear una lista de la base de datos local y luego ensenarla, esto es posible o hay alguna otra forma?

PUNTO Tres. como puedo crear una lista de producto donde le muestro productos parecidos o que tengan alguna relacion con los que el usuario antes haya visto? aqui si no tengo idea de como hacerlo que se podria hacer?

PUNTO CUATRO. Como podemos ensernarle al usuario productos mas vendidos o al azar y que la lista de productos no sea siempre en el mismo orden ni igual para todos los usuarios, aqui si no tengo idea de como hacer los gracias

Creo que todas estas funciones ofrecen una mejor experiencia de usuario y hacen a la apliacion aun mas inteligente.

Todo eso se puede hacer sin problemas, solo que es bien complicado y demoroso ya que hay que hacer una logica de estadisticas y resultados proximos por usuario, pero si se puede.
Puedes contactarnos para poder cotizarte el proyecto: https://t.me/lionsoftapp