Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add peerjakobsen/smartspender --skill email-receipt-scanninggit clone --depth 1 https://github.com/peerjakobsen/smartspenderWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/peerjakobsen/smartspender/email-receipt-scanning)<a href="https://agentmods.dev/skills/peerjakobsen/smartspender/email-receipt-scanning"><img src="https://agentmods.dev/badge/skills/peerjakobsen/smartspender/email-receipt-scanning/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/peerjakobsen/smartspender/email-receipt-scanning"><img src="https://agentmods.dev/badge/skills/peerjakobsen/smartspender/email-receipt-scanning.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00026 | $0.01747 |
| Opus 5 | $0.00013 | $0.00873 |
| Sonnet 5 | $0.00005 | $0.00349 |
| Haiku 4.5 | $0.00003 | $0.00175 |
Grade A, and why
email-receipt-scanning scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 175 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Email Receipt Scanning
Purpose
Provides Gmail search queries, Danish sender patterns, email content type detection, and deduplication rules for scanning a user's inbox for receipts and invoices. Used by the /smartspender:receipt email command.
Prerequisites
This skill requires the Gmail MCP server to be configured in the user's environment. The following MCP tools are needed:
gmail_searchor equivalent — search emails by querygmail_get_messageor equivalent — read email content and metadatagmail_get_attachmentor equivalent — download PDF attachments
If Gmail MCP is not available, commands using this skill should fail gracefully with a clear message.
Gmail Search Queries
Primary Search Query
Search for receipt and invoice emails using this combined query:
subject:(faktura OR kvittering OR receipt OR invoice OR ordre OR order OR betaling) has:attachment after:{YYYY/MM/DD}
Where {YYYY/MM/DD} is either:
- The
last_email_scantimestamp from settings.csv (incremental scan) - A calculated date based on the
daysargument (e.g., 30 days back) - Default: 90 days back if no previous scan and no argument
Supplementary Queries
If the primary query returns few results, also try:
from:(*faktura* OR *invoice* OR *noreply* OR *no-reply*) has:attachment after:{YYYY/MM/DD}
subject:(ordrebekraeftelse OR orderbekraeftelse OR betalingsbekraeftelse) after:{YYYY/MM/DD}
Query Notes
has:attachmentensures only emails with files are returned (most invoices are PDF attachments)- Danish keywords (
faktura,kvittering,betaling) catch Danish vendor emails - English keywords (
receipt,invoice,order) catch international vendors - Date filter prevents re-scanning old emails
Danish Sender Patterns
Map known email sender domains to vendor IDs for faster vendor detection:
| Sender Pattern | Vendor ID | Vendor Name | Type |
|---|---|---|---|
*@tdc.dk |
tdc |
TDC | Telecom |
*@tdcnet.dk |
tdc |
TDC | Telecom |
*@telenor.dk |
telenor |
Telenor | Telecom |
*@telia.dk |
telia |
Telia | Telecom |
*@orsted.dk |
orsted |
Oersted | Electricity |
*@hofor.dk |
hofor |
HOFOR | Water |
*@norlys.dk |
norlys |
Norlys | Electricity |
*@ewii.dk |
ewii |
EWII | Utility |
*@dinenergi.dk |
dinenergi |
Din Energi | Electricity |
*@netflix.com |
netflix |
Netflix | Streaming |
*@spotify.com |
spotify |
Spotify | Streaming |
*@amazon.com |
amazon |
Amazon | Online order |
*@amazon.de |
amazon |
Amazon | Online order |
*@zalando.dk |
zalando |
Zalando | Online order |
*@ikea.com |
ikea |
IKEA | Online order |
*@wolt.com |
wolt |
Wolt | Delivery |
*@nemlig.com |
nemlig |
Nemlig | Delivery |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 175 lines · 26 tokens per session scan A bb2947107332
email-receipt-scanning is a skill published in the GitHub repository peerjakobsen/smartspender (5 stars, last pushed 7mo ago), licensed MIT. It adds 26 tokens to every session and 1,747 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
sheet-music-publisher
Converts mastered audio to sheet music and creates printable songbooks. Use after mastering when the user wants sheet music or a songbook for their album.
reading-receipt
An image-reading workflow for extracting structured information from receipts, invoices, and hometown-tax donation certificates. It can first extract text from PDFs and otherwise read their images.
reading-deduction-cert
An image-reading workflow for extracting structured information from Japanese insurance and social-insurance deduction certificates. It can read image files and PDFs, including scanned PDFs.
reflect-solution
Summarize WHAT WAS SHIPPED in a Claude Code session as a self-contained HTML slide deck — the elevator pitch (problem, solution, decisions, artifacts, verification, gaps), not a play-by-play of tool calls or debugging detours. Defaults to the current in-context session; optionally accepts a session ID or JSONL path.…
diagram-contract
Use when a diagram is going into a document: pick the tool, write the text source, render it, and embed it with an accessible caption. Text DSL plus a committed SVG is the shape — nomnoml for structure and flow, D2 for architecture, the house palette on both.
merit-documents
Keep every Merit Aktiva transaction backed by its source document (receipt / supplier invoice). Audits Merit for invoices missing an attachment, searches configured sources (local folders, or Gmail/Drive/etc. via a command adapter) for the matching PDF, stages or attaches it, and reports what it cannot find to a…