diff --git a/Makefile b/Makefile
index 4e15ae83110c43da572477aa9caa5c91d63e426d..d3bc7fc58d905b5d6ea337f703c5c6e442af7603 100644
--- a/Makefile
+++ b/Makefile
@@ -129,7 +129,16 @@ build_all_providers:
 # packaging templates
 #########################################################################
 
+vendor_init:
+	@./branding/scripts/init
+	# TODO we should do the prepare step here, store it in VENDOR_PATH
+
+vendor_check:
+	@./branding/scripts/check
+	# TODO move ca-check here
+
 vendor: gen_providers_json
+	# TODO merge with prepare, after moving the gen_pkg to vendor_init
 
 gen_providers_json:
 	@python3 branding/scripts/gen-providers-json.py branding/config/vendor.conf gui/providers/providers.json
diff --git a/branding/README.rst b/branding/README.rst
index 7f2f16ac54606fb61e1fd43b91f1b3efaf62f9ae..108ba5ec56f12fc9cb8c544ce04dba71d0d61980 100644
--- a/branding/README.rst
+++ b/branding/README.rst
@@ -1,4 +1,4 @@
-Branding for BitmaskVPN
+BitmaskVPN Branding Procedure
 ================================================================================
 
 This folder contains everything that is needed to generate a customized built of
@@ -8,9 +8,21 @@ the Desktop BitmaskVPN app for a given provider.
 Configure
 --------------------------------------------------------------------------------
 
-* Copy or edit the file at 'branding/config/vendor.conf'. Add all the needed variables.
-* Copy your provider CA certificate to the same folder: 'branding/config/<provider>-ca.crt'
-* Make sure that the folder 'branding/assets/<provider>' exists. Copy there all the needed assets.
+To start a new vendoring project, initialize a new repo for your provider:
+
+  export VENDOR_PATH=../leapvpn-myprovider-pkg
+  make vendor_init
+
+Follow the directions in the output of the above command. Basically you need to
+configure your provider CA certificate, and some graphical assets:
+
+  * Copy your provider CA certificate to the same folder: 'config/<provider>-ca.crt'
+  * Check the list of assets at 'assets/FILES.Readme'.
+
+You can validate your configuration:
+
+  export VENDOR_PATH=../leapvpn-myprovider-pkg
+  make vendor_check
 
 Checkout
 --------------------------------------------------------------------------------
@@ -29,14 +41,16 @@ before the build. If you want to skip this check, pass `SKIP_CACHECK=yes`
 
 Run::
 
- PROVIDER=example make vendor
+ export VENDOR_PATH=../leapvpn-myprovider-pkg
+ make vendor
+ make prepare
 
 Then you can build the binary::
 
- ./build.sh
-
+ make build
 
-* The following does not work yet! in progress ------------------
+* FIXME: the following does not work yet ---------------------
+  REFACTORING in progress ------------------------------------
 
 Then you can build all the packages::
 
diff --git a/branding/scripts/ASSETS_LIST b/branding/scripts/ASSETS_LIST
new file mode 100644
index 0000000000000000000000000000000000000000..71c89e30a5df666138f2a553fa2f44ff870ac24e
--- /dev/null
+++ b/branding/scripts/ASSETS_LIST
@@ -0,0 +1,2 @@
+svg/icon.svg
+ico/logo.ico
diff --git a/branding/scripts/check b/branding/scripts/check
new file mode 100755
index 0000000000000000000000000000000000000000..07b2a715d6727a9ef1293ae1624e07bdeaa2295c
--- /dev/null
+++ b/branding/scripts/check
@@ -0,0 +1,4 @@
+#!/usr/bin/env python3
+
+if __name__ == "__main__":
+    print("[+] Checking your provider config... (WIP)")
diff --git a/branding/scripts/init b/branding/scripts/init
new file mode 100755
index 0000000000000000000000000000000000000000..ba9ce5231e342d2ae20cdb02e00d77ee8f833519
--- /dev/null
+++ b/branding/scripts/init
@@ -0,0 +1,108 @@
+#!/usr/bin/env python3
+# (c) LEAP Encryption Access Project 2020
+# License: GPL
+
+import subprocess
+import sys
+import os
+
+VENDOR_PATH = None
+SCRIPT_NAME = sys.argv[0]
+CA_README = "config/CERT.Readme"
+ASSETS_README = "assets/FILES.Readme"
+
+def initVendor():
+    global VENDOR_PATH
+    if not VENDOR_PATH:
+        bail("ERROR: Please set VENDOR_PATH environment variable.")
+    VENDOR_PATH = os.path.abspath(VENDOR_PATH)
+    if os.path.isdir(VENDOR_PATH):
+        bail("ERROR: VENDOR_PATH folder already exists")
+
+    for d in ["config", "assets", "pkg"]:
+        os.makedirs(os.path.join(VENDOR_PATH, d))
+
+    initVendorConfig()
+    initGitRepo() 
+    displayRepoInfo()
+
+def displayRepoInfo():
+    print("[+] Initialized repo in", VENDOR_PATH)
+    print(f"[ ] - Add the assets in the assets/ folder, see {ASSETS_README}.")
+    print(f"[ ] - Add the CA certificate in the config/ folder, see {CA_README}.")
+    print("[ ] - Remember to commit your changes.")
+    print()
+    print("[+] After doing that, you can run 'make vendor_check' to validate the configuration for your provider.")
+
+def bail(msg=None):
+    if not msg:
+        print("ERROR: no arguments supported!")
+        print('Usage: {scriptname}'.format(
+            scriptname=SCRIPT_NAME))
+    else:
+        print(msg)
+    sys.exit(1)
+
+def getVendorPath():
+    return os.environ.get('VENDOR_PATH')
+
+def initVendorConfig():
+
+    with open(os.path.join(VENDOR_PATH, "config", "vendor.conf"), "w") as f:
+        f.write(CONF_TEMPLATE)
+
+    with open(os.path.join(VENDOR_PATH, CA_README), "w") as f:
+        f.write(CA_INFO)
+
+    with open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "ASSETS_LIST")) as f:
+        allAssets = f.read()
+
+    with open(os.path.join(VENDOR_PATH, ASSETS_README), "w") as f:
+        f.write(ASSETS_INFO)
+        f.write(allAssets)
+
+def initGitRepo():
+    out = subprocess.run(['git', 'init'], cwd=VENDOR_PATH)
+    if out.returncode != 0:
+        print(f'ERROR: cannot initialize git repo in {VENDOR_PATH}')
+
+
+CONF_TEMPLATE = """[default]
+
+provider = myprovider
+
+[myprovider]
+
+name                = MyProvider
+applicationName     = MyProviderVPN
+binaryName          = myprovider-vpn
+
+providerURL         = example.org
+auth                = anon
+apiURL              = https://api.myprovider.net/
+caURL               = https://myprovider.net/ca.crt
+
+infoURL             = https://myprovider.net/vpn
+tosURL              = https://myprovider.net/tos
+helpURL             = https://myprovider.net/support
+
+geolocationAPI      = https://myprovider.net:9001/json
+
+askForDonations     = true
+donateURL           = https://myprovider.net/vpn/donate
+"""
+
+CA_INFO = """Place in this folder your provider's CA certificate, with the name:
+
+    <providerName>-ca.crt
+"""
+
+ASSETS_INFO = """This is the list of assets that you MUST place in this folder for your provider:
+
+"""
+
+if __name__ == "__main__":
+    if len(sys.argv) != 1:
+        bail()
+    VENDOR_PATH = getVendorPath()
+    initVendor()
diff --git a/branding/scripts/provider.py b/branding/scripts/provider.py
index 619382bafb90a7e6a2f1b866c909cec1987a593e..ec8c80afb05c94433ff201b5dc8070d808c7ea3f 100644
--- a/branding/scripts/provider.py
+++ b/branding/scripts/provider.py
@@ -32,4 +32,3 @@ def getProviderData(provider, config):
         datetime.datetime.now())
 
     return d
-