{% extends "base.html" %} {% block title %}Dashboard — sentrytriage{% endblock %} {% block content %}

At a glance

Total events
{{ total_events }}
Interesting
{{ counts.interesting }}
Boring (suppressed)
{{ counts.boring }}
Unclassified
{{ counts.unclassified }}

Events per day (last 14)

{% if events_per_day %} {% set bar_w = 18 %} {% set gap = 2 %} {% for day, n in events_per_day %} {% set x = loop.index0 * (bar_w + gap) %} {% set h = (n / max_per_day) * 60 if max_per_day else 0 %} {{ day.isoformat() }} - {{ n }} event{{ "" if n == 1 else "s" }} {% if loop.index0 == 0 or loop.last %} {{ day.strftime("%m-%d") }} {% endif %} {% endfor %} {% else %}

No events in the last 14 days.

{% endif %}
{% if feedback_stats.total > 0 %}

Your feedback vs. the VLM

Agreement
{{ agreement_pct }}%
Total ratings
{{ feedback_stats.total }}
Bumped to interesting
{{ feedback_stats.override_to_interesting }}
Bumped to boring
{{ feedback_stats.override_to_boring }}

Open any event detail and tap 👍 / 👎 to add a rating. View all overrides or run triage export-overrides to dump them as JSONL.

{% if recent_overrides %}

Recent overrides

{% for event, feedback in recent_overrides %} {% endfor %}
WhenVLM saidYou saidCaption
{{ event.timestamp.strftime("%m-%d %H:%M") }} {% if event.interesting is sameas true %} interesting {% elif event.interesting is sameas false %} boring {% else %} unclassified {% endif %} {% if feedback.value %} interesting {% else %} boring {% endif %} {{ event.one_line_caption or "(no caption)" }}

Showing {{ recent_overrides|length }}. See all overrides →

{% endif %} {% else %}

Your feedback vs. the VLM

No feedback yet. Open an event detail and tap 👍 / 👎 to start teaching the model where it's wrong.

{% endif %} {% if category_counts %}

Categories

{% for cat, n in category_counts %}
{{ cat }} {{ n }}
{% endfor %}
{% endif %} {% if interesting_recent %}

Recent interesting events

{% for ev in interesting_recent %} {% endfor %}
WhenCategoryConfidenceCaption
{{ ev.timestamp.strftime("%Y-%m-%d %H:%M") }} {{ ev.category }} {{ "%.2f" | format(ev.confidence or 0) }} {{ ev.one_line_caption }}
{% endif %}

Recent events ({{ recent_events|length }} of {{ total_events }})

{% if recent_events %} {% for ev in recent_events %} {% endfor %}
WhenStatusCategoryCaption
{{ ev.timestamp.strftime("%m-%d %H:%M") }} {% if ev.interesting %} interesting {% elif ev.interesting is sameas false %} boring {% else %} unclassified {% endif %} {{ ev.category or "—" }} {{ ev.one_line_caption or "(no caption)" }}
{% else %}

No events yet. Run triage demo-seed to populate with synthetic data, or triage watch against your real SentryClips/.

{% endif %}
{% endblock %}