agentsclimarketplace

Merit documents

Skill Elnora-AI/elnora-merit-aktiva/skills/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 Slack-compatible webhook. Runs on a schedule. Use when: "missing receipts", "which invoices have no document", "attach receipts", "receipt audit", "documents without invoices", "find missing invoices", "auto-attach receipts", "receipt reminder", "document compliance". TRIGGERS: "missing receipt", "missing invoice", "no attachment", "receipt audit", "document sync", "attach receipt", "which transactions lack a receipt", "unattached invoice", "receipt reminder", "merit documents".From its SKILL.md

Install
npx -y skills add Elnora-AI/elnora-merit-aktiva --skill merit-documents

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

3.6 KB, as published. Nobody here has run it

Merit document sync

Every transaction needs its original receipt/invoice for accounting. This skill finds the ones that don't have it, tries to locate the file, and flags the rest.

Full design + config: docs/document-sync.md.

Audit (read-only)

List invoices with no attached document. Purchases by default (an expense with no receipt is the real gap); --sales also checks issued invoices.

elnora-merit documents list-missing --from 2026-01-01 --to 2026-07-31
elnora-merit documents list-missing --sales

Output: { count, missing: [{ kind, id, billNo, partyName, docDate, grossTotal, currency, paid }] }. The signal is Merit's own FileExists flag on each invoice header.

Find + resolve

elnora-merit documents run                 # audit → search → match → digest (READ-ONLY)
elnora-merit documents run --apply         # also stage matched PDFs for a UI upload
elnora-merit documents run --apply --rebook        # attach in place (delete+recreate; unpaid)
elnora-merit documents run --apply --rebook --force  # also paid (drops payment link — re-book it)

Matching scores each candidate PDF on amount (0.5) + date (0.3) + party name (0.2); ≥0.9 auto-resolves, 0.6–0.9 is reported to confirm by hand.

Attach limit: Merit's API only accepts a file at invoice creation time — there is no attach-to-existing endpoint. So run --apply defaults to staging (copy the PDF to a folder, named by invoice, for a 2-second drag into the Merit UI). --rebook delete+recreates instead; avoid it on paid invoices unless you will re-book the payment. Best practice: attach the receipt in the same purchase-invoices create call for new bills.

Sources (local + Gmail/Drive/anything)

Configure in ~/.config/elnora-merit/docsync.json (see docsync.example.json):

  • { "type": "dir", "path": "~/Downloads" } — scan a local folder for PDFs and image receipts (.jpg/.png/.heic/.webp/…).
  • { "type": "command", "command": "…" } — run your own fetcher for Gmail/Drive/scanner; it writes files locally and prints one JSON line per candidate ({"path":"…","amounts":[…],"dates":[…],"text":"…"}). No provider SDK or secret lives in this package.

Reporting

Digest goes to MERIT_DOCSYNC_WEBHOOK (Slack-compatible incoming webhook), or a notifyCommand (stdin), or is printed. Never commit the webhook URL.

Schedule

elnora-merit documents install-schedule --interval-hours 6
launchctl load ~/Library/LaunchAgents/com.merit-aktiva.docsync.plist

Interval-based (not a fixed clock time), plus at-login, so a laptop that is closed at any given moment still catches up on next wake, and it follows the machine's timezone. Remove with documents uninstall-schedule. Non-macOS: the command prints a cron snippet.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.