diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 31bc9c13cfeb331cdc60296a91ae3ea5ccc90e22..10e95cdf37e8a8e4285cab5e77b5654e233dc6fd 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,10 +2,29 @@
 image: git-r3lab.uni.lu:4567/r3/docker/jekyll-lcsb:1.6
 
 stages:
+  - prepare
   - build
   - generate
   - deploy
 
+# prepare
+# ------------------------------------------------------------------------------------
+
+prepare:index:
+  image: python
+  stage: prepare
+  rules:
+    - if: $CI_COMMIT_BRANCH
+    - if: $CI_MERGE_REQUEST_ID
+  script:
+    - python .ci/generateIndex.py
+    - mkdir .tmp
+    - cp index.md .tmp/.
+  artifacts:
+    expire_in: 1 day
+    paths:
+      - .tmp
+
 # build
 # ------------------------------------------------------------------------------------
 
@@ -36,6 +55,9 @@ build:pages:
     # Display, which configuration is used
     - 'echo "Configuration: " && cat ".ci/_config_$CI_COMMIT_REF_NAME.yml"'
 
+    # retrieve index from previous stage
+    - cp .tmp/index.md .
+
     # Run Jekyll with custom configuration
     - bundle exec jekyll build -d build --config "_config.yml,.ci/_config_$CI_COMMIT_REF_NAME.yml"