diff --git a/SW.Bitween.Api/Resources/Dashboard/RetrySummary.cs b/SW.Bitween.Api/Resources/Dashboard/RetrySummary.cs
new file mode 100644
index 00000000..62ba0cbd
--- /dev/null
+++ b/SW.Bitween.Api/Resources/Dashboard/RetrySummary.cs
@@ -0,0 +1,169 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
+using SW.Bitween.Domain;
+using SW.PrimitiveTypes;
+
+namespace SW.Bitween.Resources.Dashboard;
+
+///
+/// The two things a retry chain can say that a count of failures cannot: which pieces of work
+/// have been retried over and over and are still failing, and whether retrying is achieving
+/// anything at all.
+///
+///
+/// Both in one handler because both belong to the same panel — a repeat offender means little
+/// without knowing whether retries generally work here. Nine attempts against the same connection
+/// error is a configuration problem someone has to fix; nine attempts where most retries do
+/// eventually succeed is bad luck.
+///
+[HandlerName("retrysummary")]
+public class RetrySummary : IQueryHandler