diff --git a/docs/generate_model_js.py b/docs/generate_model_js.py
new file mode 100644
index 0000000000000000000000000000000000000000..ba894314ebb0ffda9400f91e38ed0b36b969e71f
--- /dev/null
+++ b/docs/generate_model_js.py
@@ -0,0 +1,101 @@
+import json
+
+
+def get_key_val(part):
+    key_index_start = part.index('[')
+    key_index_end = part.index(']')
+    val_index_start = part.rindex('(')
+    val_index_end = part.rindex(')')
+
+    key = part[key_index_start + 1: key_index_end]
+    val = part[val_index_start + 1: val_index_end]
+
+    return key, val
+
+
+# Read the content from README.md
+with open('../README.md', 'r') as file:
+    content = file.read()
+
+# Extract the relevant information from the content
+models = []
+lines = content.split('\n')
+lines = lines[lines.index('## Models') + 4: lines.index('## Resources') - 2]
+
+headers = []
+headers = lines[0].split('|')[1:-1]
+headers = [header.strip() for header in headers]
+
+for line in lines[2:]:
+    parts = line.split('|')[1:-1]
+    parts = [part.strip() for part in parts]
+    model = dict(zip(headers, parts))
+    models.append(model)
+
+year = None
+
+for model in models:
+    # handle empty years
+    if model["Year"] == "":
+        model["Year"] = year
+    else:
+        year = model["Year"]
+        
+    # handle model, docs and paper part
+    name_paper_str = model["Model and Paper"]
+
+    for i, part in enumerate(name_paper_str.split(', ')):
+        key, val = get_key_val(part)
+
+        if i == 0:
+            model["Name"] = key
+            model["Link"] = val
+        else:
+            model[key] = val
+    
+    # handle environment part
+    
+    env_part = model["Environment"].split(', ')[0]
+    
+    search_dict = {
+            "PyTorch": "torch",
+            "TensorFlow": "tensorflow"
+    }
+    
+    if "requirements" in env_part:
+        _, requirements_dir = get_key_val(env_part)
+
+        # read requirements file
+        with open(f'../{requirements_dir}', 'r') as file:
+            requirements = file.read()
+            
+            for header, package in search_dict.items():
+                model[header] = package in requirements
+    else:
+        for header, _ in search_dict.items():
+            model[header] = False
+    
+    # remove non required keys
+    model.pop("Model and Paper")
+    model.pop("Environment")
+    
+    # Get package name
+    model_dir = model["Link"]
+    
+    with open(f'../{model_dir}/__init__.py', 'r') as file:
+        init_data = file.read()
+        
+        package_names = []
+        
+        for row in init_data.split('\n'):
+            if "import" in row:
+                package_name = row[row.index("import") + len("import "):]
+                package_names.append(f"cornac.models.{package_name}")
+        
+        model["packages"] = package_names
+
+json_str = json.dumps(models, indent=4)
+
+# Write the JSON object to a file
+with open('source/_static/models/data.js', 'w') as file:
+    file.write(f"var data = {json_str};")
diff --git a/docs/source/_static/models/data.js b/docs/source/_static/models/data.js
new file mode 100644
index 0000000000000000000000000000000000000000..678a72bb096790f284ae18512d45b47049504d57
--- /dev/null
+++ b/docs/source/_static/models/data.js
@@ -0,0 +1,804 @@
+var data = [
+    {
+        "Year": "2024",
+        "Type": "Hybrid / Sentiment / Explainable",
+        "Name": "Hypergraphs with Attention on Reviews (HypAR)",
+        "Link": "cornac/models/hypar",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.hypar.recom_hypar",
+        "paper": "https://doi.org/10.1007/978-3-031-56027-9_14",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.HypAR"
+        ]
+    },
+    {
+        "Year": "2022",
+        "Type": "Content-Based / Text & Image",
+        "Name": "Disentangled Multimodal Representation Learning for Recommendation (DMRL)",
+        "Link": "cornac/models/dmrl",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.dmrl.recom_dmrl",
+        "paper": "https://arxiv.org/pdf/2203.05406.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.DMRL"
+        ]
+    },
+    {
+        "Year": "2021",
+        "Type": "Collaborative Filtering / Content-Based",
+        "Name": "Bilateral Variational Autoencoder for Collaborative Filtering (BiVAECF)",
+        "Link": "cornac/models/bivaecf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.bivaecf.recom_bivaecf",
+        "paper": "https://dl.acm.org/doi/pdf/10.1145/3437963.3441759",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.BiVAECF"
+        ]
+    },
+    {
+        "Year": "2021",
+        "Type": "Content-Based / Image",
+        "Name": "Causal Inference for Visual Debiasing in Visually-Aware Recommendation (CausalRec)",
+        "Link": "cornac/models/causalrec",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.causalrec.recom_causalrec",
+        "paper": "https://arxiv.org/abs/2107.02390",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.CausalRec"
+        ]
+    },
+    {
+        "Year": "2021",
+        "Type": "Explainable",
+        "Name": "Explainable Recommendation with Comparative Constraints on Product Aspects (ComparER)",
+        "Link": "cornac/models/comparer",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.comparer.recom_comparer_sub",
+        "paper": "https://dl.acm.org/doi/pdf/10.1145/3437963.3441754",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.ComparERSub",
+            "cornac.models.ComparERObj"
+        ]
+    },
+    {
+        "Year": "2020",
+        "Type": "Content-Based / Image",
+        "Name": "Adversarial Multimedia Recommendation (AMR)",
+        "Link": "cornac/models/amr",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.amr.recom_amr",
+        "paper": "https://ieeexplore.ieee.org/document/8618394",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.AMR"
+        ]
+    },
+    {
+        "Year": "2020",
+        "Type": "Content-Based / Text",
+        "Name": "Hybrid Deep Representation Learning of Ratings and Reviews (HRDR)",
+        "Link": "cornac/models/hrdr",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.hrdr.recom_hrdr",
+        "paper": "https://www.sciencedirect.com/science/article/abs/pii/S0925231219313207",
+        "PyTorch": false,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.HRDR"
+        ]
+    },
+    {
+        "Year": "2020",
+        "Type": "Collaborative Filtering",
+        "Name": "LightGCN: Simplifying and Powering Graph Convolution Network",
+        "Link": "cornac/models/lightgcn",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.lightgcn.recom_lightgcn",
+        "paper": "https://arxiv.org/pdf/2002.02126.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.LightGCN"
+        ]
+    },
+    {
+        "Year": "2020",
+        "Type": "Next-Basket",
+        "Name": "Predicting Temporal Sets with Deep Neural Networks (DNNTSP)",
+        "Link": "cornac/models/dnntsp",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.dnntsp.recom_dnntsp",
+        "paper": "https://arxiv.org/pdf/2006.11483.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.DNNTSP"
+        ]
+    },
+    {
+        "Year": "2020",
+        "Type": "Next-Basket",
+        "Name": "Recency Aware Collaborative Filtering (UPCF)",
+        "Link": "cornac/models/upcf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.upcf.recom_upcf",
+        "paper": "https://dl.acm.org/doi/abs/10.1145/3340631.3394850",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.UPCF"
+        ]
+    },
+    {
+        "Year": "2020",
+        "Type": "Next-Basket",
+        "Name": "Temporal-Item-Frequency-based User-KNN (TIFUKNN)",
+        "Link": "cornac/models/tifuknn",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.tifuknn.recom_tifuknn",
+        "paper": "https://arxiv.org/pdf/2006.00556.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.TIFUKNN"
+        ]
+    },
+    {
+        "Year": "2020",
+        "Type": "Collaborative Filtering",
+        "Name": "Variational Autoencoder for Top-N Recommendations (RecVAE)",
+        "Link": "cornac/models/recvae",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.recvae.recom_recvae",
+        "paper": "https://doi.org/10.1145/3336191.3371831",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.RecVAE"
+        ]
+    },
+    {
+        "Year": "2019",
+        "Type": "Next-Basket",
+        "Name": "Correlation-Sensitive Next-Basket Recommendation (Beacon)",
+        "Link": "cornac/models/beacon",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#correlation-sensitive-next-basket-recommendation-beacon",
+        "paper": "https://www.ijcai.org/proceedings/2019/0389.pdf",
+        "PyTorch": false,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.Beacon"
+        ]
+    },
+    {
+        "Year": "2019",
+        "Type": "Collaborative Filtering",
+        "Name": "Embarrassingly Shallow Autoencoders for Sparse Data (EASE\u1d3f)",
+        "Link": "cornac/models/ease",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ease.recom_ease",
+        "paper": "https://arxiv.org/pdf/1905.03375.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.EASE"
+        ]
+    },
+    {
+        "Year": "2019",
+        "Type": "Collaborative Filtering",
+        "Name": "Neural Graph Collaborative Filtering (NGCF)",
+        "Link": "cornac/models/ngcf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ngcf.recom_ngcf",
+        "paper": "https://arxiv.org/pdf/1905.08108.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.NGCF"
+        ]
+    },
+    {
+        "Year": "2018",
+        "Type": "Content-Based / Graph",
+        "Name": "Collaborative Context Poisson Factorization (C2PF)",
+        "Link": "cornac/models/c2pf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.c2pf.recom_c2pf",
+        "paper": "https://www.ijcai.org/proceedings/2018/0370.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.C2PF"
+        ]
+    },
+    {
+        "Year": "2018",
+        "Type": "Collaborative Filtering",
+        "Name": "Graph Convolutional Matrix Completion (GCMC)",
+        "Link": "cornac/models/gcmc",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.gcmc.recom_gcmc",
+        "paper": "https://www.kdd.org/kdd2018/files/deep-learning-day/DLDay18_paper_32.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.GCMC"
+        ]
+    },
+    {
+        "Year": "2018",
+        "Type": "Explainable",
+        "Name": "Multi-Task Explainable Recommendation (MTER)",
+        "Link": "cornac/models/mter",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.mter.recom_mter",
+        "paper": "https://arxiv.org/pdf/1806.03568.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.MTER"
+        ]
+    },
+    {
+        "Year": "2018",
+        "Type": "Explainable / Content-Based",
+        "Name": "Neural Attention Rating Regression with Review-level Explanations (NARRE)",
+        "Link": "cornac/models/narre",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.narre.recom_narre",
+        "paper": "http://www.thuir.cn/group/~YQLiu/publications/WWW2018_CC.pdf",
+        "PyTorch": false,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.NARRE"
+        ]
+    },
+    {
+        "Year": "2018",
+        "Type": "Content-Based / Graph",
+        "Name": "Probabilistic Collaborative Representation Learning (PCRL)",
+        "Link": "cornac/models/pcrl",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.pcrl.recom_pcrl",
+        "paper": "http://www.hadylauw.com/publications/uai18.pdf",
+        "PyTorch": false,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.PCRL"
+        ]
+    },
+    {
+        "Year": "2018",
+        "Type": "Collaborative Filtering",
+        "Name": "Variational Autoencoder for Collaborative Filtering (VAECF)",
+        "Link": "cornac/models/vaecf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.vaecf.recom_vaecf",
+        "paper": "https://arxiv.org/pdf/1802.05814.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.VAECF"
+        ]
+    },
+    {
+        "Year": "2017",
+        "Type": "Content-Based / Text",
+        "Name": "Collaborative Variational Autoencoder (CVAE)",
+        "Link": "cornac/models/cvae",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.cvae.recom_cvae",
+        "paper": "http://eelxpeng.github.io/assets/paper/Collaborative_Variational_Autoencoder.pdf",
+        "PyTorch": false,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.CVAE"
+        ]
+    },
+    {
+        "Year": "2017",
+        "Type": "Content-Based / Text",
+        "Name": "Conditional Variational Autoencoder for Collaborative Filtering (CVAECF)",
+        "Link": "cornac/models/cvaecf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.cvaecf.recom_cvaecf",
+        "paper": "https://dl.acm.org/doi/10.1145/3132847.3132972",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.CVAECF"
+        ]
+    },
+    {
+        "Year": "2017",
+        "Type": "Collaborative Filtering",
+        "Name": "Generalized Matrix Factorization (GMF)",
+        "Link": "cornac/models/ncf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ncf.recom_gmf",
+        "paper": "https://arxiv.org/pdf/1708.05031.pdf",
+        "PyTorch": true,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.GMF",
+            "cornac.models.MLP",
+            "cornac.models.NeuMF"
+        ]
+    },
+    {
+        "Year": "2017",
+        "Type": "Collaborative Filtering",
+        "Name": "Indexable Bayesian Personalized Ranking (IBPR)",
+        "Link": "cornac/models/ibpr",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ibpr.recom_ibpr",
+        "paper": "http://www.hadylauw.com/publications/cikm17a.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.IBPR"
+        ]
+    },
+    {
+        "Year": "2017",
+        "Type": "Content-Based / Graph",
+        "Name": "Matrix Co-Factorization (MCF)",
+        "Link": "cornac/models/mcf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.mcf.recom_mcf",
+        "paper": "https://dsail.kaist.ac.kr/files/WWW17.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.MCF"
+        ]
+    },
+    {
+        "Year": "2017",
+        "Type": "Collaborative Filtering",
+        "Name": "Multi-Layer Perceptron (MLP)",
+        "Link": "cornac/models/ncf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ncf.recom_mlp",
+        "paper": "https://arxiv.org/pdf/1708.05031.pdf",
+        "PyTorch": true,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.GMF",
+            "cornac.models.MLP",
+            "cornac.models.NeuMF"
+        ]
+    },
+    {
+        "Year": "2017",
+        "Type": "Collaborative Filtering",
+        "Name": "Neural Matrix Factorization (NeuMF) / Neural Collaborative Filtering (NCF)",
+        "Link": "cornac/models/ncf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ncf.recom_neumf",
+        "paper": "https://arxiv.org/pdf/1708.05031.pdf",
+        "PyTorch": true,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.GMF",
+            "cornac.models.MLP",
+            "cornac.models.NeuMF"
+        ]
+    },
+    {
+        "Year": "2017",
+        "Type": "Collaborative Filtering",
+        "Name": "Online Indexable Bayesian Personalized Ranking (Online IBPR)",
+        "Link": "cornac/models/online_ibpr",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.online_ibpr.recom_online_ibpr",
+        "paper": "http://www.hadylauw.com/publications/cikm17a.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.OnlineIBPR"
+        ]
+    },
+    {
+        "Year": "2017",
+        "Type": "Content-Based / Image",
+        "Name": "Visual Matrix Factorization (VMF)",
+        "Link": "cornac/models/vmf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.vmf.recom_vmf",
+        "paper": "https://dsail.kaist.ac.kr/files/WWW17.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.VMF"
+        ]
+    },
+    {
+        "Year": "2016",
+        "Type": "Content-Based / Text",
+        "Name": "Collaborative Deep Ranking (CDR)",
+        "Link": "cornac/models/cdr",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.cdr.recom_cdr",
+        "paper": "http://inpluslab.com/chenliang/homepagefiles/paper/hao-pakdd2016.pdf",
+        "PyTorch": false,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.CDR"
+        ]
+    },
+    {
+        "Year": "2016",
+        "Type": "Collaborative Filtering",
+        "Name": "Collaborative Ordinal Embedding (COE)",
+        "Link": "cornac/models/coe",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.coe.recom_coe",
+        "paper": "http://www.hadylauw.com/publications/sdm16.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.COE"
+        ]
+    },
+    {
+        "Year": "2016",
+        "Type": "Content-Based / Text",
+        "Name": "Convolutional Matrix Factorization (ConvMF)",
+        "Link": "cornac/models/conv_mf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.conv_mf.recom_convmf",
+        "paper": "http://uclab.khu.ac.kr/resources/publication/C_351.pdf",
+        "PyTorch": false,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.ConvMF"
+        ]
+    },
+    {
+        "Year": "2016",
+        "Type": "Explainable",
+        "Name": "Learning to Rank Features for Recommendation over Multiple Categories (LRPPM)",
+        "Link": "cornac/models/lrppm",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#learn-to-rank-user-preferences-based-on-phrase-level-sentiment-analysis-across-multiple-categories-lrppm",
+        "paper": "https://www.yongfeng.me/attach/sigir16-chen.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.LRPPM"
+        ]
+    },
+    {
+        "Year": "2016",
+        "Type": "Next-Item",
+        "Name": "Session-based Recommendations With Recurrent Neural Networks (GRU4Rec)",
+        "Link": "cornac/models/gru4rec",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.gru4rec.recom_gru4rec",
+        "paper": "https://arxiv.org/pdf/1511.06939.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.GRU4Rec"
+        ]
+    },
+    {
+        "Year": "2016",
+        "Type": "Collaborative Filtering",
+        "Name": "Spherical K-means (SKM)",
+        "Link": "cornac/models/skm",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.skm.recom_skmeans",
+        "paper": "https://www.sciencedirect.com/science/article/pii/S092523121501509X",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.SKMeans"
+        ]
+    },
+    {
+        "Year": "2016",
+        "Type": "Content-Based / Image",
+        "Name": "Visual Bayesian Personalized Ranking (VBPR)",
+        "Link": "cornac/models/vbpr",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.vbpr.recom_vbpr",
+        "paper": "https://arxiv.org/pdf/1510.01784.pdf",
+        "PyTorch": true,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.VBPR"
+        ]
+    },
+    {
+        "Year": "2015",
+        "Type": "Content-Based / Text",
+        "Name": "Collaborative Deep Learning (CDL)",
+        "Link": "cornac/models/cdl",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.cdl.recom_cdl",
+        "paper": "https://arxiv.org/pdf/1409.2944.pdf",
+        "PyTorch": false,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.CDL"
+        ]
+    },
+    {
+        "Year": "2015",
+        "Type": "Collaborative Filtering",
+        "Name": "Hierarchical Poisson Factorization (HPF)",
+        "Link": "cornac/models/hpf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.hpf.recom_hpf",
+        "paper": "http://jakehofman.com/inprint/poisson_recs.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.HPF"
+        ]
+    },
+    {
+        "Year": "2015",
+        "Type": "Explainable",
+        "Name": "TriRank: Review-aware Explainable Recommendation by Modeling Aspects",
+        "Link": "cornac/models/trirank",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.trirank.recom_trirank",
+        "paper": "https://wing.comp.nus.edu.sg/wp-content/uploads/Publications/PDF/TriRank-%20Review-aware%20Explainable%20Recommendation%20by%20Modeling%20Aspects.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.TriRank"
+        ]
+    },
+    {
+        "Year": "2014",
+        "Type": "Explainable",
+        "Name": "Explicit Factor Model (EFM)",
+        "Link": "cornac/models/efm",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.efm.recom_efm",
+        "paper": "https://www.yongfeng.me/attach/efm-zhang.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.EFM"
+        ]
+    },
+    {
+        "Year": "2014",
+        "Type": "Content-Based / Social",
+        "Name": "Social Bayesian Personalized Ranking (SBPR)",
+        "Link": "cornac/models/sbpr",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#social-bayesian-personalized-ranking-sbpr",
+        "paper": "https://cseweb.ucsd.edu/~jmcauley/pdfs/cikm14.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.SBPR"
+        ]
+    },
+    {
+        "Year": "2013",
+        "Type": "Content-Based / Text",
+        "Name": "Hidden Factors and Hidden Topics (HFT)",
+        "Link": "cornac/models/hft",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.hft.recom_hft",
+        "paper": "https://cs.stanford.edu/people/jure/pubs/reviews-recsys13.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.HFT"
+        ]
+    },
+    {
+        "Year": "2012",
+        "Type": "Collaborative Filtering",
+        "Name": "Weighted Bayesian Personalized Ranking (WBPR)",
+        "Link": "cornac/models/bpr",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#weighted-bayesian-personalized-ranking-wbpr",
+        "paper": "http://proceedings.mlr.press/v18/gantner12a/gantner12a.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.BPR",
+            "cornac.models.WBPR"
+        ]
+    },
+    {
+        "Year": "2011",
+        "Type": "Content-Based / Text",
+        "Name": "Collaborative Topic Regression (CTR)",
+        "Link": "cornac/models/ctr",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.ctr.recom_ctr",
+        "paper": "http://www.cs.columbia.edu/~blei/papers/WangBlei2011.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.CTR"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Baseline",
+        "Name": "Baseline Only",
+        "Link": "cornac/models/baseline_only",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#baseline-only",
+        "paper": "http://courses.ischool.berkeley.edu/i290-dm/s11/SECURE/a1-koren.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.BaselineOnly"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Collaborative Filtering",
+        "Name": "Bayesian Personalized Ranking (BPR)",
+        "Link": "cornac/models/bpr",
+        "docs": "https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.BPR",
+            "cornac.models.WBPR"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Collaborative Filtering / Content-Based",
+        "Name": "Factorization Machines (FM)",
+        "Link": "cornac/models/fm",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#factorization-machines-fm",
+        "paper": "https://www.csie.ntu.edu.tw/~b97053/paper/Factorization%20Machines%20with%20libFM.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.FM"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Baseline",
+        "Name": "Global Average (GlobalAvg)",
+        "Link": "cornac/models/global_avg",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.global_avg.recom_global_avg",
+        "paper": "https://datajobs.com/data-science-repo/Recommender-Systems-[Netflix].pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.GlobalAvg"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Next-Basket",
+        "Name": "Global Personalized Top Frequent (GPTop)",
+        "Link": "cornac/models/gp_top",
+        "paper": "https://dl.acm.org/doi/pdf/10.1145/3587153",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.GPTop"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Neighborhood-Based",
+        "Name": "Item K-Nearest-Neighbors (ItemKNN)",
+        "Link": "cornac/models/knn",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#item-k-nearest-neighbors-itemknn",
+        "paper": "https://dl.acm.org/doi/pdf/10.1145/371920.372071",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.ItemKNN",
+            "cornac.models.UserKNN"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Collaborative Filtering",
+        "Name": "Matrix Factorization (MF)",
+        "Link": "cornac/models/mf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.mf.recom_mf",
+        "paper": "https://datajobs.com/data-science-repo/Recommender-Systems-[Netflix].pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.MF"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Collaborative Filtering",
+        "Name": "Maximum Margin Matrix Factorization (MMMF)",
+        "Link": "cornac/models/mmmf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.mmmf.recom_mmmf",
+        "paper": "https://link.springer.com/content/pdf/10.1007/s10994-008-5073-7.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.MMMF"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Baseline",
+        "Name": "Most Popular (MostPop)",
+        "Link": "cornac/models/most_pop",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.most_pop.recom_most_pop",
+        "paper": "https://arxiv.org/ftp/arxiv/papers/1205/1205.2618.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.MostPop"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Collaborative Filtering",
+        "Name": "Non-negative Matrix Factorization (NMF)",
+        "Link": "cornac/models/nmf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.nmf.recom_nmf",
+        "paper": "http://papers.nips.cc/paper/1861-algorithms-for-non-negative-matrix-factorization.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.NMF"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Collaborative Filtering",
+        "Name": "Probabilistic Matrix Factorization (PMF)",
+        "Link": "cornac/models/pmf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.pmf.recom_pmf",
+        "paper": "https://papers.nips.cc/paper/3208-probabilistic-matrix-factorization.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.PMF"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Next-Item / Baseline",
+        "Name": "Session Popular (SPop)",
+        "Link": "cornac/models/spop",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.spop.recom_spop",
+        "paper": "https://arxiv.org/pdf/1511.06939.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.SPop"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Collaborative Filtering",
+        "Name": "Singular Value Decomposition (SVD)",
+        "Link": "cornac/models/svd",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.svd.recom_svd",
+        "paper": "https://people.engr.tamu.edu/huangrh/Spring16/papers_course/matrix_factorization.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.SVD"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Content-Based / Social",
+        "Name": "Social Recommendation using PMF (SoRec)",
+        "Link": "cornac/models/sorec",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.sorec.recom_sorec",
+        "paper": "http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.304.2464&rep=rep1&type=pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.SoRec"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Neighborhood-Based",
+        "Name": "User K-Nearest-Neighbors (UserKNN)",
+        "Link": "cornac/models/knn",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#user-k-nearest-neighbors-userknn",
+        "paper": "https://arxiv.org/pdf/1301.7363.pdf",
+        "PyTorch": false,
+        "TensorFlow": false,
+        "packages": [
+            "cornac.models.ItemKNN",
+            "cornac.models.UserKNN"
+        ]
+    },
+    {
+        "Year": "Earlier",
+        "Type": "Collaborative Filtering",
+        "Name": "Weighted Matrix Factorization (WMF)",
+        "Link": "cornac/models/wmf",
+        "docs": "https://cornac.readthedocs.io/en/stable/api_ref/models.html#module-cornac.models.wmf.recom_wmf",
+        "paper": "http://yifanhu.net/PUB/cf.pdf",
+        "PyTorch": false,
+        "TensorFlow": true,
+        "packages": [
+            "cornac.models.WMF"
+        ]
+    }
+];
\ No newline at end of file
diff --git a/docs/source/_static/models/models.html b/docs/source/_static/models/models.html
new file mode 100644
index 0000000000000000000000000000000000000000..fcee3e469d19c12cd6d2c6a0f9bff7258e29699b
--- /dev/null
+++ b/docs/source/_static/models/models.html
@@ -0,0 +1,104 @@
+<html lang="en">
+ <head>
+   <script src="https://cdn.jsdelivr.net/npm/ag-grid-community/dist/ag-grid-community.min.js"></script>
+ </head>
+ <body>
+    <h3>Filters</h3>
+    <div>
+        <button onclick="clearFilters()">Clear Filters</button>
+    </div>
+    <div style="margin-top: 16px;">
+        <button onclick="filterModels('Collaborative Filtering')">Collaborative Filtering Models</button>
+        <button onclick="filterModels('Content-Based')">Content Based Models</button>
+        <button onclick="filterModels('Explainable')">Explainable Models</button>
+        <button onclick="filterModels('Next-Item')">Next-Item Models</button>
+        <button onclick="filterModels('Next-Basket')">Next-Basket Models</button>
+        <button onclick="filterModels('Baseline')">Baseline Models</button>
+    </div>
+    <div style="margin-top: 16px;">
+        <input type="text" id="filter-text-box" size="50" placeholder="Fliter" oninput="onFilterTextBoxChanged()" />
+    </div>
+    <br />
+    <div id="grid" class="ag-theme-quartz" style="height: 480px"></div>
+ </body>
+</html>
+<script type="text/javascript" src="data.js"></script>
+<script type="text/javascript" src="_static/models/data.js"></script>
+<script type="text/javascript">
+    function LinkRenderer(url, title) {
+        return `<a href="${url}" target="_blank">${title}</a>`
+    }
+    // Row Data Interface
+    const github_url = "https://github.com/PreferredAI/cornac/tree/master/";
+
+    // Grid API: Access to Grid API methods
+    let gridApi;
+
+    function onFilterTextBoxChanged() {
+        gridApi.setGridOption(
+            "quickFilterText",
+            document.getElementById("filter-text-box").value,
+        );
+    }
+
+    function filterModels(filter) {
+        gridApi.setColumnFilterModel("Type", {
+            type: "contains",
+            filter: filter,
+        })
+        .then(() => {
+            gridApi.onFilterChanged();
+        });
+    }
+
+    function clearFilters(){
+        gridApi.setColumnFilterModel("Type", null)
+        .then(() => {
+            gridApi.onFilterChanged();
+        });
+        // reset filter box
+        document.getElementById("filter-text-box").value="";
+        gridApi.setGridOption(
+            "quickFilterText",
+            "",
+        );
+    }
+
+    // Grid Options: Contains all of the grid configurations
+    const gridOptions = {
+        // Data to be displayed
+        rowData: data,
+        // Columns to be displayed (Should match rowData properties)
+        columnDefs: [
+            { field: "Year" },
+            { 
+                field: "Name",
+                headerName: "Model Name (Hover over for package name)",
+                
+                flex: 4,
+                cellRenderer: params => LinkRenderer(params.data.docs, params.data.Name),
+                tooltipValueGetter: (params) => "Package Name: " + params.data.packages,
+            },
+            { field: "Type", flex: 2 },
+            { 
+                field: "PyTorch", 
+                headerName: "PyTorch",
+                cellRenderer: params => params.value ? "✅" : "❌",
+            },
+            { 
+                field: "TensorFlow",
+                headerName: "TensorFlow",
+                cellRenderer: params => params.value ? "✅" : "❌",
+            },
+        ],
+        defaultColDef: {
+            flex: 1,
+            filter: true,
+            // floatingFilter: true,
+        },
+        pagination: true,
+        paginationAutoPageSize: true
+    };
+    // Create Grid: Create new grid within the #myGrid div, using the Grid Options object
+    gridApi = agGrid.createGrid(document.querySelector("#grid"), gridOptions);
+</script>
\ No newline at end of file
diff --git a/docs/source/index.rst b/docs/source/index.rst
index b0f632e1f58ee97553b0014d030362264f7f736d..6ab1367719dbb62b03f7168627e9d2a80b3990da 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -114,3 +114,9 @@ Quick Links
          :click-parent:
 
          Contributor's Guide
+
+Models Available
+^^^^^^^^^^^^^^^^
+
+.. raw:: html
+   :file: _static/models/models.html
\ No newline at end of file