hafermilch report

{{ report.target_url }}  ·  {{ report.generated_at.strftime("%Y-%m-%d %H:%M UTC") }}  ·  {{ report.persona_reports | length }} persona{{ "s" if report.persona_reports | length != 1 else "" }} {% if report.total_usage %}  ·  {{ report.total_usage.total_tokens | format_tokens }} tokens {% if report.total_usage.cost_usd is not none %} ·  ${{ "%.4f" | format(report.total_usage.cost_usd) }}{% endif %} {% endif %}
{% for pr in report.persona_reports %} {% set score_color = pr.overall_score | score_color %}
{{ "%.1f" | format(pr.overall_score) }}

{{ pr.persona_display_name }}

{% if pr.total_usage %}
{{ pr.total_usage.total_tokens | format_tokens }} tokens ({{ pr.total_usage.prompt_tokens | format_tokens }} in / {{ pr.total_usage.completion_tokens | format_tokens }} out) {% if pr.total_usage.cost_usd is not none %} ·  ${{ "%.4f" | format(pr.total_usage.cost_usd) }}{% endif %}
{% endif %}

Summary

{{ pr.summary }}

Dimension Scores

{% for ds in pr.dimension_scores %} {% set ds_color = ds.score | score_color %}
{{ ds.dimension }}
{{ "%.1f" | format(ds.score) }} {{ ds.rationale }}
{% endfor %}

Recommendations

    {% for rec in pr.recommendations %}
  • {{ rec }}
  • {% endfor %}
Evaluation Log — {{ pr.findings | length }} steps
{% for f in pr.findings %} {% set badge = f.action_taken | action_badge %}
{% if f.screenshot %}
Step {{ loop.index }} screenshot
{% else %}
no screenshot
{% endif %}
{{ f.task_name }}
Step {{ loop.index }} — {{ f.step_instruction }}
{{ f.timestamp.strftime("%H:%M:%S") }}
{{ f.url }}
Observation
{{ f.observation }}
Reasoning
{{ f.reasoning }}
{% endfor %}
{% if not loop.last %}
{% endif %} {% endfor %}