diff --git a/webservice/check_run_status.py b/webservice/check_run_status.py
new file mode 100644
index 0000000000000000000000000000000000000000..c97668fa52002019889e61aadbbcfc4db2e3d9ba
--- /dev/null
+++ b/webservice/check_run_status.py
@@ -0,0 +1,36 @@
+"""Usage: check_run_status.py <proposal> <run>
+
+e.g. check_run_status.py 3279 168
+"""
+
+import sqlite3
+import sys
+
+from config import webservice as config
+
+proposal, run = sys.argv[1:3]
+proposal = proposal.zfill(6)
+run = int(run)
+
+conn = sqlite3.connect(config['web-service']['job-db'])
+
+req_cur = conn.execute("""
+    SELECT req_id, timestamp FROM requests
+    WHERE proposal = ? AND run = ? AND action = 'CORRECT'
+""", (proposal, run))
+
+for req_id, req_time in req_cur:
+    print(f"Request {req_id} at {req_time}")
+    for exec_id, karabo_id in conn.execute(
+        "SELECT exec_id, karabo_id FROM executions WHERE req_id = ?", (req_id,)
+    ):
+        print(f"- {karabo_id}")
+        jobs_by_status = {}
+        for job_id, status in conn.execute(
+            "SELECT job_id, status FROM slurm_jobs WHERE exec_id = ?", (exec_id,)
+        ):
+            jobs_by_status.setdefault(status, []).append(job_id)
+
+        for status, job_ids in sorted(jobs_by_status.items()):
+            print(f"  {status}:", *job_ids)
+    print()