{% extends "base.html" %} {% block title %}Review - Fin{% endblock %} {% block content %}

Review

← Back to Dashboard  |  Categorization triage for current month

{% if all_accounts %}
{% for acc in all_accounts %} {% set is_selected = (acc['account_id'] in selected_accounts) if selected_accounts else (not show_no_data) %} {% endfor %}
{% if selected_accounts or show_no_data %} All Accounts {% endif %}
{% endif %} {% if show_no_data %}

Select accounts to view review data.

{% else %} {% set needs_review_count = (ghosts | length) + (low_confidence | length) %} {% if needs_review_count > 0 %}
{{ needs_review_count }} transaction{{ 's' if needs_review_count != 1 else '' }} need{{ '' if needs_review_count != 1 else 's' }} review
{% else %}
All caught up — no transactions need review
{% endif %} {% if ghosts %}

Uncategorized Expenses ({{ ghosts|length }})

{% for txn in ghosts %} {% endfor %}
Date Merchant Amount Description Category
{{ txn.posted_at }} {{ txn.merchant_norm }} ${{ "%.2f"|format(txn.amount_cents|abs / 100) }} {{ txn.raw_description }}
{% endif %} {% if low_confidence %}

Low Confidence ({{ low_confidence|length }})

{% for txn in low_confidence %} {% endfor %}
Date Merchant Amount Type Confidence Reason
{{ txn.posted_at }} {{ txn.merchant_norm }} ${{ "%.2f"|format(txn.amount_cents|abs / 100) }} {{ txn.txn_type.name }} {{ "%.0f"|format(txn.reason.confidence * 100) }}% {{ txn.reason.primary_code }}
{% endif %} {% if not ghosts and not low_confidence %}

No transactions need review this month.

{% endif %}

Top Merchants by Spend ({{ top_merchants|length }})

{% if top_merchants %}
{% for m in top_merchants %} {% endfor %}
Merchant Charges Total Last Seen Type
{{ m.merchant }} {{ m.count }} ${{ "%.2f"|format(m.total_cents / 100) }} {{ m.last_seen }} {% if m.status == 'tracked' %} Subscription / Bill {% elif m.status == 'recurring' %} Recurring {% else %} One-time {% endif %}
{% else %}

No merchant data available.

{% endif %}
{{ coverage.total_txns }}
Transactions
{{ coverage.cat_pct }}%
Categorized
{{ coverage.tracked_merchants }}
Tracked Merchants
{{ coverage.low_conf }}
Low Confidence
{% endif %} {% endblock %}