Index: src/routes/guardian.js
===================================================================
--- src/routes/guardian.js	(revision 2708282985faa68002d3d9051b403c0e12b11dd9)
+++ src/routes/guardian.js	(revision d9ad6c564eccd0e4c23c3d8c2c8a32334f2443bc)
@@ -19,5 +19,6 @@
 import * as Guardianship from '../services/guardianship/index.js';
 import { t as i18nT, resolveLang } from '../services/i18n.js';
-import { injectCspNonce } from '../middleware/render.js';
+import { injectCspNonce, renderNoteBody } from '../middleware/render.js';
+import { emojiName } from '../services/NoteRender.js';
 
 const router = express.Router();
@@ -51,7 +52,15 @@
   const me = AP.actorId(base, site.slug);
   const help = db.prepare(
-    `SELECT object_uri, note_url, actor_uri, actor_name, actor_handle, actor_icon, content, published, created_at
+    `SELECT object_uri, note_url, actor_uri, actor_name, actor_handle, actor_icon, content, published, created_at,
+            emoji_json, actor_emoji_json, media_json, quote_json, embed_json
      FROM ap_mentions WHERE slug = ? AND help_request = 1 ORDER BY created_at DESC LIMIT 50`
-  ).all(site.slug);
+  ).all(site.slug).map((h) => ({
+    ...h,
+    // The dashboard is built in the browser, so it gets the body finished: the
+    // same partial de Krant and Berichten use. A 🛟 often carries a screenshot
+    // and a link to the post it is about; both belong in the card.
+    body_html: renderNoteBody(h, L),
+    name_html: emojiName(h.actor_name || '', h.actor_emoji_json),
+  }));
   return {
     site: site.slug,
