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
WF *WAYFAIR4465805275WAYFAIR
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

The app ships with an offline merchant recognition catalog (merchants.db) used only by Big Picture Money. A complete install from the download page includes that catalog and the on-device matching assets. You can also place merchants.db in the same folder as your data file (bigpicture.db); the app discovers it automatically — no environment variables required. That file is app reference data, not your ledger — see Security and encryption.

After some app updates, merchant matching may improve automatically with no extra steps from you — for example when an update includes an improved merchant database, or quieter improvements that apply in the background. See Check for updates.

Uncommon local payees may still need a one-time manual category; that choice becomes a learned pattern for next time.

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

Spending charts

On Spending, when you drill into a leaf category, the donut groups related bank payees using the same kind of cleanup and merchant matching described here — so twenty noisy McDonald’s strings can appear as one slice. See Spending.