The goal of this project is to develop a state-of-the art collaborative filtering recommender system using machine learning that can be trained on multiple datasets. Collaborative filtering is the method used by tech companies like Amazon and Netflix for their recommender systems, as it can be trained on implicit feedback and without having user & item metadata. We implement a Factorization Machine model solution with additional functionality like Bayesian Personalized Ranking Loss, Graph Convolutional Network embeddings & previous item context. Then we train it on the movielens 100k dataset and compare our results with a published paper to confirm that it's working correctly. We then analyze a second dataset published by Spotify originally for song skip prediction, extract a miniset that can be used for recommender systems and train our model on it to recommend songs. In both cases we obtain the results that adding GCN embeddings improves the quality metrics. Finally we propose a solution to adapt Factorization Machines to address the cold start problem.