diff --git a/._README.md b/._README.md
deleted file mode 100644
index 23131a6..0000000
--- a/._README.md
+++ /dev/null
Binary files differ
diff --git a/README.md b/README.md
index e486f5b..79c7f33 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Integrated Automatic Gain Control 
+# Integrated Automatic Gain Control
 [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) [![CI](https://github.com/ryanrocket/caravel_automatic_gain_control/actions/workflows/user_project_ci.yml/badge.svg)](https://github.com/ryanrocket/caravel_automatic_gain_control/actions/workflows/user_project_ci.yml) [![Caravan Build](https://github.com/ryanrocket/caravel_automatic_gain_control/actions/workflows/caravan_build.yml/badge.svg)](https://github.com/ryanrocket/caravel_automatic_gain_control/actions/workflows/caravan_build.yml) 
 
 --- 
diff --git a/docs/tests/doc.py b/docs/tests/doc.py
new file mode 100644
index 0000000..0fe69d3
--- /dev/null
+++ b/docs/tests/doc.py
@@ -0,0 +1,35 @@
+import logging
+import os
+
+BANNED_WORDS = ['blacklist', 'slave', 'whitelist']  # Banned Keywords
+DOCUMENTATION_EXTS = ['.doc', '.docx', '.html', '.md', '.odt', '.rst']  # Valid Document Extensions
+IGNORED_DIRS = ['.git', 'third_party']  # Directories ignored for documentation check
+
+DOCUMENTATION_FILENAME = 'README'
+
+
+def check_inclusive_language(file):
+    print("starting check")
+    try:
+        with open(file, encoding='utf-8') as f:
+            content = f.read()
+        for word in BANNED_WORDS:
+            if word in content:
+                print(f"The documentation file ({file}) contains the non-inclusive word: {word}")
+                return False
+        return True
+    except UnicodeDecodeError as unicode_error:
+        print(f"DOCUMENTATION FILE UNICODE DECODE EXCEPTION in ({file}): {unicode_error}")
+        return False
+
+def main():
+    print("start")
+    script_dir = os.path.dirname(__file__) #<-- absolute dir the script is in
+    rel_path = "../../README.md"
+    abs_file_path = os.path.join(script_dir, rel_path)  
+    if(check_inclusive_language(abs_file_path)):
+        print("file passed")
+    else:
+        print("file failed")
+
+main()
\ No newline at end of file
