Analyst dashboard front door

This front door explains why the analyst surface exists: the tutorial needs a place where the analytical contract from ADR-0006 can be read as evidence, not as a promise in an architecture note. The editor interface proves the app contract by calling HTTP. This surface proves the other side of the same platform by querying the DuckDB-readable warehouse directly. Both contracts sit on top of the same serving data, so the analyst is not looking at a side export or a presentation copy. They are reading the tables that define how recommendation behaviour is measured.

That matters because the thesis in ADR-0004 is not "build a better recommender model." The thesis is that editorial accountability belongs in the platform layer: in configuration history, in constraint math, in evaluation sweeps, and in surfaces where non-model metrics can be inspected without asking an engineer to run a notebook. A dashboard grid can show that the data exists. A report-style analyst surface has to do more. It should make an argument and then show the data that supports or complicates that argument.

The inventory below is deliberately small. It is a map of the contract rather than a status wall. There are publisher impression rows, evaluation rows, and configuration versions. Those are the three ingredients needed for an analyst to ask whether an editorial change improved the system or merely moved the numbers around. The first strip gives the raw shape of the surface; the bar chart underneath turns the same shape into a quick visual check that this is a multi-table analytical contract, not a single dashboard dataset.

Source tables: stg_unified_impressions, eval_sweep_results, constraint_configurations, editorial_changes, and assistant_calls.

What each report argues

The Pareto report argues that click accuracy is not free. ADR-0009 defines evaluation by comparing constraint configurations, not by declaring the highest click metric the winner. That report follows the frontier from clicks-first settings toward diversity-forward settings and asks what the newsroom buys with each point of NDCG@10 it spends.

The publisher report argues that the same analytical contract keeps publisher context visible instead of smoothing it away. EB-NeRD, Adressa, and MIND arrive with different source shapes and different baselines, but the report compares them through the same metric families. That is the practical value of the audience split in ADR-0006: analysts can see cross-publisher variation without dropping back into raw ingestion code.

The constraint-history report argues that editorial policy is not just a current setting. It is a sequence of decisions. The audit trail from ADR-0015 shows how weights and hard-rule settings changed over time, who changed them, and which transition deserves interpretation rather than a shrug.

The sensitive-topic report argues for the hard guardrail in ADR-0010. It is the most editorially careful page because lower exposure is not a claim that sensitive journalism should disappear. It is a check that automated recommendations do not amplify sensitive-topic material beyond the limits editors deliberately set.

Read these as essays with charts embedded inline. The point is not to visit a tile, glance at a number, and leave. The point is to follow an analyst's argument from premise to measurement to consequence, using the deployed warehouse as the evidence source.

That reading style is intentional. A grid invites comparison before it explains why the comparison matters. These pages reverse the order: each report names the editorial question first, then lets the chart interrupt the prose at the moment where evidence is needed.

Dashboard pages