Skip to content

Dashboard

The dashboard (/) is the nerve center of Brand Protect. It renders the live scan progress, the findings tables, infrastructure campaigns, the audit log, and links to generated reports.

  • A 7-phase SVG timeline (Domain enumeration → Auditing) highlights the current stage.
  • A progress bar plus per-stage progress (processed/total).
  • The current stage’s telemetry as Python reports it.
  • Start / Stop / Resume controls.
  • A “Re-run from phase” bar appears for terminal scans, letting you resume from any of the 7 phases.

The dashboard has two tabs:

  • Domains — the primary findings table (~45 columns), with sortable headers, a filter box, 15 rows per page, a column-visibility dropdown, and resizable columns. Rows are expandable ([ + ]) to reveal the full signal trace: strengths, weights, contributions, phishing verdict, AI summary, and notes.
  • Social — social findings, 10 per page, with a notes toggle.

Unknown or AI-pending columns render as .

Domains sharing a host IP or DNS A-record are clustered into infrastructure campaigns (minimum cluster size 2). After a scan, the dashboard can request LLM-written narratives for each campaign (via POST /v1/campaign/narratives); a Stimulus controller swaps the deterministic narrative for the AI text when it arrives.

  • Alerts surface operational issues: incomplete brand profile (scan gating), stale AI configuration, missing webhook URL.
  • The audit log shows the last 20 events (scan_started, scan_completed, scan_failed, scan_cancelled, scan_resumed, settings_changed, webhook_sent, report_generated, takedown_generated).

When no scan is running, the dashboard shows the scanner status panel: last scan state, next scheduled rescan, and pending work.

Completed scans produce PDF reports; the dashboard links to GET /reports/:scan_id (and ?variant=summary for the executive summary).