Overview

Overview

A snapshot of demand, quality, and coverage across all advisors and channels. Use the sidebar for the full detail behind any of these.

At a glance

Service Demand

Case-note domain volume over time — anonymous triage-bot conversations, not advisor-handled cases (see Case Volume for that).

Issue domain volume over time

Case-note domain (Debt, Housing, Benefits, Employment, Family, Other) by day.

Date Domain Volume
Loading…

Case Volume

Cases an advisor actually completed (finalized case notes) by day.

Case volume handled

Not to be confused with "Service Demand", which counts anonymous triage-bot conversations, not advisor-handled cases.

Date Cases completed
Loading…

AI Insights & Quality

Case note quality grading and advisor time saved.

Advisor time saved per case

AI-assisted completion time (recording finished → case note finalized) compared against NCAB's own pre-AI baseline. Nothing here is estimated — the baseline is whatever figure NCAB enters below, and the AI-assisted average only counts cases actually completed through this system.


Case note quality score trend

Each finalized case note is automatically graded (0-3) against its category's real Casebook checklist — one point per section (Background/Notes, Info Sources, Next Steps) that's adequately covered. Only case notes saved since this feature shipped have a score.

Date Category Avg score (0-3) Notes graded
Loading…

Knowledge Coverage

% of queries where the knowledge base returned a confidently-relevant result.

Knowledge coverage

% of queries where the knowledge base returned a confidently-relevant result (vs. a low-scoring or zero-result "coverage gap") — the same threshold the Retrieval Quality admin view uses.

Date Queries Coverage gaps Coverage %
Loading…

Trend & Spikes

Domains whose current week's volume is unusually high relative to the trailing average.

Week-over-week spikes

A candidate signal for an emerging local issue. Method and thresholds are configured server-side (env config, no code change needed) and shown per card. Bar = this week's volume; the tick marks the trailing baseline.

Loading…

Peak Demand Heatmap

Query volume by day and hour — helps plan advisor staffing. Not filtered by date range (all-time pattern).

Peak demand by day & hour

Query volume heatmap — darker/brighter cells are busier.

Loading…

Categories & Domains

Classified topic of incoming chat/triage queries over time.

Query category volume over time

Classified topic of incoming chat/triage queries by day (broader than case-note domain).

Date Category Volume
Loading…

Feedback

Average client-facing feedback rating per query category, by day.

Feedback rating trend by domain
Date Category Avg rating Rated count
Loading…

Geographic Demand

By outward postcode district only, plotted on real Norfolk district boundaries.

Geographic demand

By outward postcode district only (e.g. "NR1") — combines the public triage flow's optional postcode question and the Case Record intake's optional postcode field. No full postcode or address is ever captured or shown here — district-level shading only, never a precise location.

Loading coverage…
Loading…

Areas below the small-cell threshold, or with no cases on file, are shown with a muted fill and no category detail on hover — never as a specific count below the threshold. See the module notes in api/routes/leadership_analytics.py for why.

Settings

How this dashboard's data is produced and kept up to date — no configuration here changes any calculation.

Data pipeline

Every section above is served from materialized views built and refreshed by DatabaseQueries.create_tables() / refresh_analytics_materialized_views(). A nightly external cron job hits POST /admin/analytics/refresh automatically — the "Refresh underlying data now" button in the top bar triggers exactly that same recompute on demand. "Refresh view" (also in the top bar) only re-queries the section you're currently looking at against whatever was last computed — it does not recompute anything server-side.

Geographic privacy threshold

The Geographic Demand map suppresses any area/category combination below a minimum case count (GEO_MIN_CELL_SIZE, server-configured) entirely — never shown as "<N". This is a data-governance setting, not something changed from this UI.