Skip to main content

Merchant recognition

One of the most frustrating parts of managing your finances is dealing with cryptic transaction descriptions.

Instead of seeing:

AMZN MKTP US*4J2L9
TST*SUNRISECAFE
TAMPA EMBASSY SUITES TAMPA

Big Picture Money normalizes bank text, extracts a merchant spine, and matches against a local merchant database — entirely offline after the database is present.

Spine extraction examples

Bank textExtracted spine
TAMPA EMBASSY SUITES TAMPAEMBASSY SUITES
CHICAGO STARBUCKS CHICAGOSTARBUCKS
SQ *JOES PIZZAJOES PIZZA
EMBASSY SUITES BY HILTON TAMPAEMBASSY SUITES

The app tries spines from most specific to fallback, scoring candidates by token overlap instead of requiring the merchant name to start at character zero.

Local merchant database

Place merchants-full.db (or merchants-lite.db) in the same folder as your data file (bigpicture.db). The app discovers it automatically — no environment variables required.

Categorization runs in layers (highest priority first). See Categorization precedence for the full order. In short:

  1. Your rules
  2. Built-in transaction-type patterns
  3. Your learned patterns (including ambiguous merchants like Walmart)
  4. On-device ML helpers when enabled
  5. Merchant database lookup
  6. MCC codes when present

Your choices matter most

When you manually set a category, that pattern becomes the strongest local signal. Multiple categories for the same merchant are kept when the bank text differs — groceries vs shopping at Walmart are both respected.

Optional crowd improvements

You may opt in during first-run setup or under Settings → General → Help improve categorization. Only hashed identifiers and category names are uploaded — never raw payee or description text. See Crowd contribution privacy.

When you contribute, your anonymous categorizations help improve everyone's default categories in future merchant-database updates. Patterns that match a known merchant update that merchant's default category. Patterns that do not yet map to a merchant are stored as residual crowd signals the app can still look up by hashing the payee on your device. Your own rules and learned patterns on this device always stay in control.

Privacy first

  • Your transaction history stays on your computer
  • Everyday use does not require the internet
  • Crowd participation is always optional and off by default