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.