diff --git a/tof-voters/libvoters/acceptable.py b/tof-voters/libvoters/acceptable.py
new file mode 100644
index 0000000..2e350e1
--- /dev/null
+++ b/tof-voters/libvoters/acceptable.py
@@ -0,0 +1,68 @@
+#!/usr/bin/python3
+import re
+
+
+def project(name: str) -> bool:
+    reject_regex = [
+        ".*-oem",
+        "openbmc/ibm-.*",
+        "openbmc/intel-.*",
+        "openbmc/openpower-.*",
+        "openbmc/google-.*",
+        "openbmc/meta-.*",
+    ]
+
+    reject_repo = [
+        "openbmc/s2600wf-misc",
+    ]
+
+    for r in reject_repo:
+        if r == name:
+            return False
+
+    for r in reject_regex:
+        if re.match(r, name):
+            return False
+
+    return True
+
+
+def file(proj: str, filename: str) -> bool:
+    reject_regex = {
+        "all": [
+            ".*/google/",
+            ".*/ibm/",
+            ".*/intel/",
+            "MAINTAINERS",
+            "OWNERS",
+            "ibm-.*",
+            "ibm_.*",
+        ],
+        "openbmc/entity-manager": ["configurations/.*"],
+        "openbmc/libmctp": ["docs/bindings/vendor-.*"],
+        "openbmc/openbmc": ["meta-(?!phosphor).*", "poky/.*"],
+        "openbmc/openbmc-test-automation": ["oem/.*", "openpower/.*"],
+        "openbmc/phosphor-debug-collector": [
+            "dump-extensions/.*",
+            "tools/dreport.d/ibm.d/.*",
+        ],
+        "openbmc/phosphor-fan-presence": [".*/config_files/.*"],
+        "openbmc/phosphor-power": [".*/config_files/.*"],
+        "openbmc/phosphor-led-manager": ["configs/.*"],
+        "openbmc/phosphor-logging": [".*/openpower-pels/.*"],
+        "openbmc/webui-vue": [
+            "src/env/.*",
+        ],
+    }
+
+    reject_files = ["/COMMIT_MSG"]
+
+    for r in reject_files:
+        if r == filename:
+            return False
+
+    for r in reject_regex.get(proj, []) + reject_regex.get("all", []):
+        if re.match(r, filename):
+            return False
+
+    return True
