{% extends "base.html" %} {% block title %}Alberich: a receipt{% endblock %} {% block body %}

← The Receipts

{{ (r.merchant or 'Receipt')|title }}

{{ chip[r.status][1] }} {{ r.purchase_date or '' }}{% if r.total_cents is not none %} · {{ money(r.total_cents) }}{% endif %}{% if r.ocr_engine %} · read by {{ r.ocr_engine }}{% endif %}

{% if r.note %}
{{ r.note }}
{% endif %}

The picture

{% if r.kind == 'image' %}The receipt photograph{% else %}

A PDF receipt. Open it.

{% endif %}
{% if txn %}

Bank charge

{{ txn.posted_date }} · {{ txn.acct }}
{{ txn.description_raw }} {{ money(txn.amount_cents) }}

{{ li_count }} item{{ 's' if li_count != 1 }} from this receipt {{ 'are' if li_count != 1 else 'is' }} waiting in the Review.{% if r.status != 'matched' %} Fix the receipt below before they appear.{% endif %}

{% elif r.total_cents is not none and r.purchase_date %}

Which bank charge?

{% if cands %}{% for c in cands %}
{{ c.txn.posted_date }} · {{ c.txn.acct }}
{{ c.txn.description_raw }} {{ money(c.txn.amount_cents) }}{% if not c.exact %} with tip?{% endif %}
{% endfor %} {% else %}

No unmatched charge of {{ money(r.total_cents) }} around {{ r.purchase_date }} yet. When the statement is filed, Alberich will match it himself.

{% endif %}
{% endif %}

What Alberich read

Items (clear the name to remove a line)
{% for l in lines %}{% endfor %} {% for _ in range(3) %}{% endfor %}

Items add up to {{ money(lines_sum) }}{% if r.tax_cents %}, tax {{ money(r.tax_cents) }}{% endif %}.

{% if r.verdict == 'mismatch' or r.verdict == 'incomplete' %}{% endif %}
More
{% if llm.key_present and not llm.killed %}

Let the Warlock read it

For a crumpled or faint receipt. The whole picture is sent to Anthropic. It may show shop, items, and the last digits of a card. Used this month: {{ '%.1f' % llm.spent_cents }}¢ of {{ llm.cap_cents }}¢.

{% endif %}
The raw text
{{ r.ocr_text }}
{% endblock %}