--- a
+++ b/.semaphore/semaphore.yml
@@ -0,0 +1,74 @@
+version: v1.0
+name: deidentify CI pipeline
+agent:
+  machine:
+    type: e1-standard-4
+    os_image: ubuntu1804
+auto_cancel:
+   running:
+     when: "branch != 'master'"
+
+blocks:
+  - name: Install Dependencies and Unit Tests
+    dependencies: []
+    task:
+      prologue:
+        commands:
+          - mkdir -p ~/.conda # fix https://github.com/ContinuumIO/docker-images/issues/140
+          - checkout
+          - sudo apt-get install -y locales locales-all
+          - wget http://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
+          - chmod +x miniconda.sh
+          - ./miniconda.sh -b
+          - export PATH=~/miniconda3/bin:$PATH
+          - cache restore conda-environments-$(checksum environment.yml)
+          - conda env update -f environment.yml
+          - source activate deidentify
+          - pip install -U -r requirements-dev.txt
+          - which pytest && which python
+          - cache store conda-environments-$(checksum environment.yml) ~/miniconda3/envs
+
+      jobs:
+        - name: Unit Tests
+          commands:
+            - source activate deidentify
+            - cache restore deidentify-models
+            - pytest tests/
+            - MODEL_DIR=$(python -c "from deidentify import cache_root; print(cache_root)")
+            - cache store deidentify-models $MODEL_DIR
+
+        - name: Pylint
+          commands:
+            - source activate deidentify
+            - make lintci
+
+  - name: Integration Tests
+    dependencies: ["Install Dependencies and Unit Tests"]
+    task:
+      prologue:
+        commands:
+          - checkout
+          - cache restore deidentify-models
+          - sudo locale-gen nl_NL.UTF-8 de_DE.UTF-8
+
+      jobs:
+        - name: Python 3.7
+          commands:
+            - sem-version python 3.7
+            - pip install -e . --progress-bar off
+            - python -m spacy download nl_core_news_sm
+            - python demo.py
+
+        - name: Python 3.8
+          commands:
+            - sem-version python 3.8
+            - pip install -e . --progress-bar off
+            - python -m spacy download nl_core_news_sm
+            - python demo.py
+
+        - name: Python 3.9
+          commands:
+            - sem-version python 3.9
+            - pip install -e . --progress-bar off
+            - python -m spacy download nl_core_news_sm
+            - python demo.py