diff --git a/buildstream/_exceptions.py b/buildstream/_exceptions.py
index 6fe4f4847b2ea98f2b2e8ced50d1b024ec1abc3d..69f539f79431ab04305d0ddbcfe8caf9a0b4af28 100644
--- a/buildstream/_exceptions.py
+++ b/buildstream/_exceptions.py
@@ -223,6 +223,9 @@ class LoadErrorReason(Enum):
     # An attempt so set the value of a protected variable
     PROTECTED_VARIABLE_REDEFINED = 23
 
+    # A project.conf file was invalid
+    INVALID_PROJECT_CONF = 24
+
 
 # LoadError
 #
diff --git a/buildstream/_project.py b/buildstream/_project.py
index f0ca3d71bde4b5c9fac81957e90d1546d5e96ad6..8b27f4e6b885502357af32254700555cb37db5b4 100644
--- a/buildstream/_project.py
+++ b/buildstream/_project.py
@@ -385,7 +385,10 @@ class Project():
             self._project_conf = _yaml.load(projectfile)
         except LoadError as e:
             # Raise a more specific error here
-            raise LoadError(LoadErrorReason.MISSING_PROJECT_CONF, str(e))
+            if e.reason == LoadErrorReason.MISSING_FILE:
+                raise LoadError(LoadErrorReason.MISSING_PROJECT_CONF, str(e))
+            elif e.reason == LoadErrorReason.INVALID_YAML:
+                raise LoadError(LoadErrorReason.INVALID_PROJECT_CONF, str(e))
 
         pre_config_node = _yaml.node_copy(self._default_config_node)
         _yaml.composite(pre_config_node, self._project_conf)