{% set accuracy = report.accuracy * 100 %} {% set low = report.interval[0] * 100 %} {% set high = report.interval[1] * 100 %}
tooltangle  report
{{ report.model }}  ·  {{ report.created_at[:16]|replace("T", " ") }} UTC
{{ "%.0f"|format(accuracy) }}%

of {{ "{:,}".format(report.evaluated) }} test messages went to the right tool.

Findings{{ report.findings|length }}

{% if matrix.labels %}

Confusion matrix

Rows are the tool a message was written for, columns the tool the model called.

{% for label in matrix.labels %}{% endfor %} {% for expected in matrix.labels %} {% for picked in matrix.labels %} {% set count = matrix.cells.get(expected ~ "|" ~ picked, 0) %} {% if not count %} {% elif expected == picked %} {% else %} {% endif %} {% endfor %} {% endfor %}
{{ label }}
{{ expected }}{{ count }}{{ count }}
correct {% for step in range(1, 6) %}{% endfor %} fewer to more confusions
{% endif %}

Tools{{ tools|length }}

{% for key, tool in tools %} {% endfor %}
ToolAccuracyPrecisionMessages
{{ key }} {{ tool.description or "no description" }} {% if tool.accuracy is not none %} {{ "%.0f%%"|format(tool.accuracy * 100) }} {% if tool.accuracy < 0.8 %}below 80%{% endif %} {% else %}–{% endif %} {{ "%.0f%%"|format(tool.precision * 100) if tool.precision is not none else "–" }} {{ tool.queries }}

Messages{{ report.queries|length }}