Behavioral Insights dashboard
Read your server's behavioural state. The Insights dashboard surfaces the BIE engine's per-dimension scores, collective spikes, the activity heatmap, member snapshots, and the controls for retention, export, and policy tuning.
Before you start
The engine needs some history before scores stabilise. A bit of patience pays off.
- The Insights module is enabled and the BIE engine has run at least once for this server.
- Your role has insights.view to read scores, plus insights.policy.manage to tune policy.
- For member look-ups, the bot has access to the user roster (default for any server it is in).
- For data export and purge actions you have insights.data.manage. Purge is irreversible.
- If the server is brand new, scores show “—” until the first analysis cycle completes.
What you'll see
Seven tabs run across the top. The Overview is the daily landing tab; the others zoom into specific surfaces.
Overview tab
Everything you usually need at a glance \u2014 build muscle memory here.
The KPI strip
- Server state
- Computed label: HEALTHY, STRESSED, AT_RISK, or RECOVERING. The chip beside it reads Live when the engine is running.
- Health confidence
- A 0\u2013100 ring with a trend arrow (improving, stable, degrading) and the time of the last refresh.
- Active users (24h)
- Count of distinct users observed in the last 24 hours.
- 24h activity
- Two stacked stats: collective spikes and user anomalies in the last day, with the time of the last cycle.
BIE engine status
States grid
Quick actions
- Run on-demand analysis kicks off a fresh cycle without waiting for the cadence.
- The Policy tuning card links out to DashboardInsightsPolicy for advanced configuration.
- System-info footer shows the engine version, cadence, dimension count, and an advisory-only badge.
Dimensions tab
The five behavioural dimensions broken out so you can compare averages and tails.
Dimension cards
- Activity
- Volume signal \u2014 messages, voice minutes, joins, and reactions.
- Social
- Reciprocity and reach \u2014 conversations, mentions, replies.
- Friction
- Negative signal \u2014 reports, deletes, mod actions, ratio of helpful to combative messages.
- Quality
- Content health \u2014 thread depth, image vs text balance, attachment hygiene.
- Stability
- Variance \u2014 how steady the above signals are over time.
Collective events tab
The incidents the engine has flagged in the recent past.
Incident types
- Collective spike
- A burst of activity that exceeds the dimension's normal range \u2014 raid-like volume, mass joins, etc.
- User anomaly
- A specific member's behaviour deviates from their own baseline.
- Health shift
- Server state moved between HEALTHY \u2192 STRESSED \u2192 AT_RISK \u2192 RECOVERING.
Severity
Activity heatmap tab
A 7-day grid of activity intensity by hour of day.
What you'll see
- Rows are days, columns are hours. Darker cells mean more activity.
- The card uses the same insights accent so it slots into the rest of the dashboard.
- Hover a cell to see the exact bucket count and time window.
Members tab
Look up an individual member to inspect their behavioural profile.
Searching
- Type a nickname, username, or user ID. Two characters minimum to trigger a search.
- Results render as a list of clickable rows with avatar, display name, handle, and ID.
- Click any row to open DashboardInsightsMembers{userId} for the full profile.
Data controls tab
Export, retention, purge, and a list of what's stored.
Exports
- Server overview \u2014 full JSON of the current overview payload.
- Incidents \u2014 JSON of detected events.
- Confidence histogram \u2014 the per-bucket distribution shown in Overview.
- All exports save with a filename that includes the server ID.
Retention windows
| Setting | Type | Default | Description |
|---|---|---|---|
| Redis counters | Window | 14 days | Short-term rolling counts used to score behaviour. |
| User / server rollups | Window | 24 months | Aggregated facts for long-term trend analysis. |
| Incidents | Window | 90 days | Detected collective events and anomalies. |
| Score caches | Window | 2 hours | Cached per-cycle scores; refreshed on the cadence. |
Purge
- The danger button opens a confirm prompt before anything is deleted.
- Confirming clears stored Insights data scoped to this server.
- A success banner replaces the button while the purge is acknowledged.
What's stored
Audit tab
Engine and dashboard activity. Currently surfaces refresh events keyed by the system actor.
Columns
Common tasks
Three flows you'll repeat regularly.
Diagnose a stressed server
Open DashboardInsightsBehavioral InsightsOverview.
- Look at the Server state KPI. If it reads STRESSED or AT_RISK, note the dimension scores.
- Switch to Dimensions and find the dimension with the lowest score and largest gap to p95.
- Open Collective events and look for spikes or anomalies in the last 24h on that dimension.
- Cross-reference with Activity heatmap to find when the spike happened.
- If a specific user keeps appearing in the spike, search them in Members.
Run an on-demand analysis
Open DashboardInsightsBehavioral InsightsOverview.
- Find the Run on-demand analysis card on the right side of the Overview.
- Click Run now. The button shows a spinner while the cycle runs.
- The KPI cards refresh once the cycle completes; check Last refresh updated.
Export and purge insights data for a member request
Open DashboardInsightsBehavioral InsightsData controls.
- Click Server overview, Incidents, and Confidence histogram in turn to download a snapshot.
- Hand the JSON files over with a note about the retention table on the same tab.
- If a deletion request follows, click Purge, confirm, and wait for the success banner.
Troubleshooting
What to check when the dashboard reads zero, stale, or empty.