Moderation queue and review interface exists
Why it matters
Collecting reports without a tool to review them is operationally equivalent to collecting no reports at all. Under DSA Art. 22, platforms must ensure reported content is reviewed in a timely manner — storing reports in a database that only a developer can query via SQL satisfies neither the letter nor the spirit of that requirement. Without a moderation interface, backlogs grow unbounded, harmful content stays visible indefinitely, and moderators cannot triage by severity or content type. This is the enforcement gap between detection and action.
Severity rationale
Critical because without a reviewable queue, collected reports are inert — no moderator can act on them, so the reporting system provides no actual safety improvement.
Remediation
Build a moderation dashboard at src/app/admin/moderation/page.tsx that surfaces pending reports with full context and at least two action buttons (approve, remove). Minimum viable interface:
export default async function ModerationQueue() {
const reports = await db.reports.findMany({
where: { status: 'pending' },
orderBy: { createdAt: 'asc' },
include: { content: true },
});
return (
<table>
<thead>
<tr><th>Content</th><th>Reason</th><th>Reported At</th><th>Actions</th></tr>
</thead>
<tbody>
{reports.map(r => (
<tr key={r.id}>
<td>{r.content?.preview}</td>
<td>{r.reason}</td>
<td>{r.createdAt.toISOString()}</td>
<td>
<button onClick={() => approve(r.id)}>Approve</button>
<button onClick={() => remove(r.id)}>Remove</button>
</td>
</tr>
))}
</tbody>
</table>
);
}
Gate the route with moderator-role middleware; a raw DB view without action buttons does not satisfy this check.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Content Moderation & Safety Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- external · DSA-Art22 — EU Digital Services Act Article 22 — Trusted Flaggers
Taxons
History
- 2026-04-18·v1.0.0·Initial import from community-moderation-safety·automated