diff --git a/helpers/ExerciceHelper.ts b/helpers/ExerciceHelper.ts
new file mode 100644
index 0000000000000000000000000000000000000000..fccaefeab58aeb647c10312c6756d090548aca04
--- /dev/null
+++ b/helpers/ExerciceHelper.ts
@@ -0,0 +1,49 @@
+import Ajv, { ErrorObject, JTDSchemaType } from 'ajv/dist/jtd';
+import fs                                  from 'fs-extra';
+import ExerciceResultsFile                 from '../types/Dojo/ExerciceResultsFile';
+import hjson                               from 'hjson';
+
+
+class ExerciceHelper {
+    validateResultFile(resultsFilePath: string): {
+        results: ExerciceResultsFile, isValid: boolean, errors: ErrorObject<string, Record<string, any>, unknown>[] | null | undefined
+    } {
+        const ajv = new Ajv();
+
+        const schema: JTDSchemaType<ExerciceResultsFile> = {
+            properties          : {
+                success: { type: 'boolean' }
+            },
+            optionalProperties  : {
+                successfulTests: { type: 'uint32' },
+                failedTests    : { type: 'uint32' },
+
+                successfulTestsList: {
+                    elements: {
+                        type: 'string'
+                    }
+                },
+                failedTestsList    : {
+                    elements: {
+                        type: 'string'
+                    }
+                }
+            },
+            additionalProperties: false
+        };
+
+        const validator = ajv.compile(schema);
+
+        const results = hjson.parse(fs.readFileSync(resultsFilePath, 'utf8'));
+        const isValid = validator(results);
+
+        return {
+            results: isValid ? results as ExerciceResultsFile : results as any,
+            isValid: isValid,
+            errors : validator.errors
+        };
+    }
+}
+
+
+export default new ExerciceHelper();
\ No newline at end of file