Hacki
All BUIDLs

About the project

What it is

Accrue is a financial oversight agent for small companies. Feed it bank statements (CSV/PDF), invoices (text/PDF) or phone photos of receipts. It detects what you gave it, routes it to the right pipeline, and answers the questions an operations team answers by hand: which subscriptions are we paying, what changed this month and why, does this invoice match a real charge, and which cases need a human.

All inference runs on-device through @qvac/sdk. No cloud calls, no API keys. After the first model download, it works with wifi off.

What it does

  • Detects recurring subscriptions from statements and categorizes them (tech vs. non-tech) with local embeddings
  • Flags duplicate charges, price increases, first-time charges, and a spend-vs-inflows signal ("subscription spend rose 14%, inflows stayed flat, review it") with hardcoded honesty caveats: small window, inflows are not revenue, no causal claim
  • Extracts invoices to a strict JSON schema (null over guessing) and reconciles them automatically against the statement: amount, vendor by semantic similarity, closest date
  • Validates Colombian tax IDs with the DIAN check-digit algorithm, fully deterministic
  • Catches duplicate invoices across sessions and across formats (same invoice as text and as photo)
  • Writes a self-contained HTML monthly report where the LLM only rephrases numbers the rules already computed

How it works

Design principle: rules compute, models read and write. Every reported number comes from deterministic code. Local models do what rules cannot: read messy documents, compare entity names, classify merchants, write one-sentence explanations a human can verify in five seconds. Confidence levels (auto-approved / quick review / manual review / pending reconciliation) decide the routing; nothing uncertain is ever auto-approved.

For photos there is a three-layer escalation, built after testing with a real crumpled utility bill: fast OCR first (EasyOCR reads "$" as "5"; Accrue detects that exact pattern and refuses to trust those amounts), then a local vision model (Qwen3.5-VL 4B) that reads the image directly and recovered the correct total, and when the vision model misread one digit of the tax ID, the deterministic DIAN validation caught it. Rules, models, human.

QVAC integration

Models: Qwen3-4B-Instruct Q4_K_M (extraction, explanations, narrative), GTE-Large FP16 (embeddings for vendor matching and merchant categorization), EasyOCR latin (fast OCR), Qwen3.5-VL-4B Q4_K_M + mmproj (vision escalation). Inference entry points are listed with direct file links in the README's "QVAC integration" table.

Measured on an Apple M4 Pro (24 GB): statement analysis 1.6 s, statement PDF 0.4 s, text invoice ~21 s, clean photo ~55 s, hard photo with vision escalation ~4.5 min. Resident mode (--watch) keeps models warm and processes documents in seconds as they land in a folder.

Honest limitations

Dense small-print documents can still wobble on secondary fields after vision escalation; those cases are never auto-approved and land in manual review with the exact suspicious values listed. "Unused subscription" detection needs usage data a statement cannot prove, so we do not claim it.