diff --git a/hook/find-collisions.py b/hook/find-collisions.py
new file mode 100755
index 0000000000000000000000000000000000000000..db6526e54af29f970be7353b93003ffcb9ee94b1
--- /dev/null
+++ b/hook/find-collisions.py
@@ -0,0 +1,62 @@
+#!/usr/bin/env python3
+
+import configparser
+import psycopg2
+import psycopg2.extras
+import datetime
+import dateutil.tz
+import time
+
+config = configparser.ConfigParser()
+config.read('zoom.ini')
+
+db_conn = psycopg2.connect(dbname=config['db']['name'], user=config['db']['user'], password=config['db']['passwd'], host="127.0.0.1")
+db = db_conn.cursor(cursor_factory=psycopg2.extras.NamedTupleCursor)
+
+db.execute("""
+    SELECT
+        m.meeting_id, m.topic, u.uid, u.full_name, s.occurrence_id, s.start_time, s.duration
+    FROM
+        zoom_meetings m
+        JOIN zoom_users u ON u.uid = m.host_uid
+        JOIN zoom_schedule s ON s.mid = m.mid
+    WHERE
+        s.start_time >= NOW()
+    ORDER BY u.uid, s.start_time
+    """)
+
+class Meeting:
+
+    def __init__(self, row):
+        for f in row._fields:
+            setattr(self, f, getattr(row, f))
+        self.start_time = self.start_time.replace(tzinfo=dateutil.tz.tz.tzutc()).astimezone(dateutil.tz.gettz())
+        self.end_time = self.start_time + datetime.timedelta(minutes=self.duration)
+        self.time_range = self.start_time.strftime("%Y-%m-%d %H:%M") + "-" + self.end_time.strftime("%H:%M")
+
+    def __str__(self):
+        return "Meeting(" + ", ".join([ k + ":" + str(getattr(self, k)) for k in dir(self) if k[0] != '_' ]) + ")"
+
+last_uid = None
+running = []
+
+for row in db:
+    m = Meeting(row)
+    # print(m)
+
+    if m.uid != last_uid:
+        last_uid = m.uid
+        running = []
+
+    while running and running[0].end_time <= m.start_time:
+        running.pop(0)
+
+    colls = [ r for r in running if r.end_time > m.start_time + datetime.timedelta(minutes=5) ]
+    if colls:
+        print(f"Collison for {m.time_range} {m.topic} [{m.meeting_id}:{m.occurrence_id} {m.full_name}]")
+        for c in colls:
+            print(f"\t{c.time_range} {c.topic} [{c.meeting_id}:{c.occurrence_id}]")
+        print()
+
+    pos = sum(1 for r in running if r.end_time <= m.end_time)
+    running.insert(pos, m)