Distillery Knowledge Graph
Operator dashboard
A single-page control surface for the static graph workflow: what the dataset contains, how fresh the build artifacts are, where parity stands, and which research queues still need attention.
generated
portal parity
dashboard model static export
Operator Routes
The surfaces and artifacts that matter most when inspecting a build, a parity run, or a research queue.
<section class="panel span-5" data-panel="queues">
<h2>Queue Summary</h2>
<p class="hint">The parts of the graph that still need manual research or confidence cleanup.</p>
<div class="mini-grid" id="queueSummary"></div>
</section>
<section class="panel span-4" data-panel="graph">
<h2>Graph Shape</h2>
<p class="hint">Entity counts across the current built SQLite graph.</p>
<div class="mini-grid" id="entities"></div>
</section>
<section class="panel span-4" data-panel="graph">
<h2>Distillery Status</h2>
<p class="hint">Current row counts by top-level distillery status.</p>
<div class="list" id="statuses"></div>
</section>
<section class="panel span-4" data-panel="graph">
<h2>Countries</h2>
<p class="hint">Top countries currently represented in `distilleries.db`.</p>
<div class="list" id="countries"></div>
</section>
<section class="panel span-6" data-panel="graph">
<h2>Scotch Capacity Pulse</h2>
<p class="hint">Largest present-day owner groups by total Scotch capacity tracked in the graph.</p>
<div class="list" id="owners"></div>
</section>
<section class="panel span-6" data-panel="graph">
<h2>Scotch Regions</h2>
<p class="hint">Operating Scotch distilleries and capacity by `geo_region`.</p>
<div class="list" id="regions"></div>
</section>
<section class="panel span-8" data-panel="parity">
<h2>Portal Parity</h2>
<p class="hint">Snapshot of the latest reconciliation artifacts. This is the operator pulse for KG↔portal compatibility.</p>
<div class="chipline" id="parityCounts"></div>
<div style="height:16px"></div>
<div class="split">
<div>
<h3 style="margin:0 0 10px;font:600 14px/1 'Open Sans',Arial,sans-serif;color:var(--ink)">Decision mix</h3>
<div class="list" id="decisions"></div>
</div>
<div>
<h3 style="margin:0 0 10px;font:600 14px/1 'Open Sans',Arial,sans-serif;color:var(--ink)">Triage dispositions</h3>
<div class="list" id="triage"></div>
</div>
</div>
</section>
<section class="panel span-4" data-panel="graph">
<h2>Timeline Provenance</h2>
<p class="hint">How the current timelines entered the graph.</p>
<div class="list" id="timelineSources"></div>
</section>
<section class="panel span-6" data-panel="queues">
<h2>Rescan Sample</h2>
<p class="hint">A quick look at the first items still flagged for rescan or low confidence.</p>
<table>
<thead><tr><th>Kind</th><th>Subject</th><th>Flag</th></tr></thead>
<tbody id="rescanTable"></tbody>
</table>
</section>
<section class="panel span-6" data-panel="queues">
<h2>Stub Sample</h2>
<p class="hint">The low-event end of the stub worklist, where manual expansion still matters most.</p>
<table>
<thead><tr><th>Name</th><th>Status</th><th>Events</th><th>State</th></tr></thead>
<tbody id="stubTable"></tbody>
</table>
</section>