From 26fb19ca9a2ebd9effe73c28db90701bab87d0b4 Mon Sep 17 00:00:00 2001 From: Dane Sabo Date: Mon, 25 May 2026 18:54:50 -0400 Subject: [PATCH] Migration runbook + rebuild tooling; 10 PNC/income/Don't Know rules - migration/README.md: cold-start rebuild runbook (reconciliation gate, classification rules, transfer pairing, investment policy, execution order) - migration/build_rebuild_dataset.py: consolidated 3-QFX builder with PNC- owned transfers, counterpart pairing & drop, per-account reconciliation - migration/rebuild_clusters.{json,md}: clustering proposal for the rebuild - migration/rebuild_review.html: read-only browser review for the 1017-txn rebuild plan (transfers under PNC, category fixes baked in) - migration/{pnc_review,review_preview_mixed}.html: earlier UI previews - merchant_map.json: add 10 settled deterministic rules (Duquesne Light, Pitt Salary, Interest Payment, IRS, Pitt Tuition, Daily Cash Adjustment, ATM Surcharge/Yardi/Venmo/Zelle->Don't Know) so the skill stops flagging pre-classified PNC lines as UNMATCHED --- merchant_map.json | 395 +- migration/README.md | 78 + migration/build_rebuild_dataset.py | 116 + migration/pnc_review_preview.html | 299 ++ migration/rebuild_clusters.json | 6229 +++++++++++++++++++++++++++ migration/rebuild_clusters.md | 192 + migration/rebuild_review.html | 378 ++ migration/review_preview_mixed.html | 378 ++ 8 files changed, 8019 insertions(+), 46 deletions(-) create mode 100644 migration/README.md create mode 100644 migration/build_rebuild_dataset.py create mode 100644 migration/pnc_review_preview.html create mode 100644 migration/rebuild_clusters.json create mode 100644 migration/rebuild_clusters.md create mode 100644 migration/rebuild_review.html create mode 100644 migration/review_preview_mixed.html diff --git a/merchant_map.json b/merchant_map.json index 984a994..59a78a6 100644 --- a/merchant_map.json +++ b/merchant_map.json @@ -5,50 +5,353 @@ "daily_cash_adjustment": "'DAILY CASH ADJUSTMENT' => Apple Card Daily Cash; the ADJUSTMENT is NEGATIVE cashback income (clawback on a return). Sign follows amount; revenue acct 'Apple Card Cashback'." }, "rules": [ - {"match": "AMZN|AMAZON", "regex": true, "account_name": "Amazon", "review": true, "type": "withdrawal"}, - {"match": "EBAY", "account_name": "eBay", "review": true, "type": "withdrawal"}, - {"match": "SVDP", "account_name": "St. Vincent de Paul", "review": true, "type": "withdrawal"}, - {"match": "WINE AND SPIRITS", "account_name": "Fine Wine & Good Spirits", "review": true, "type": "withdrawal"}, - {"match": "COMCAST|XFINITY", "regex": true, "account_name": "Comcast / Xfinity", "review": true, "type": "withdrawal"}, - {"match": "LIBERTY MUTUAL", "account_name": "Liberty Mutual", "review": true, "type": "withdrawal"}, - - {"match": "JEGS", "account_name": "JEGS", "review": true, "type": "withdrawal"}, - {"match": "APEX RACE PARTS", "account_name": "Apex Race Parts", "review": true, "type": "withdrawal"}, - {"match": "ADVANCE AUTO", "account_name": "Advance Auto Parts", "review": true, "type": "withdrawal"}, - {"match": "SUBARU OF SOUTH HILLS", "account_name": "Subaru of South Hills", "review": true, "type": "withdrawal"}, - {"match": "ALLEGHENY ARMS", "account_name": "Allegheny Arms", "category": "Recreation: Firearms", "review": true, "type": "withdrawal"}, - {"match": "WILLI S SKI|WILLIS SKI", "regex": true, "account_name": "Willi's Ski Shop", "category": "Recreation: Snowboarding", "review": true, "type": "withdrawal"}, - - {"match": "CASTLE SHANNON SHOP", "account_name": "Shop 'n Save", "category": "Groceries", "budget": "Needs", "type": "withdrawal"}, - {"match": "MARKET DISTRICT|GIANT EAGLE", "regex": true, "account_name": "Giant Eagle", "category": "Groceries", "budget": "Needs", "type": "withdrawal"}, - {"match": "KUHNS", "account_name": "Kuhn's Market", "category": "Groceries", "budget": "Needs", "type": "withdrawal"}, - {"match": "COMPEER", "account_name": "Compeer Investments", "category": "Rent", "budget": "Needs", "type": "withdrawal"}, - {"match": "UPMC STUDENT INSURANCE", "account_name": "UPMC Student Insurance", "category": "Medical", "budget": "Needs", "type": "withdrawal"}, - {"match": "SPIEGEL FREEDMAN", "account_name": "Spiegel Freedman Psychological Associates", "category": "Medical", "budget": "Needs", "type": "withdrawal"}, - - {"match": "APPLE.COM", "account_name": "Apple", "category": "Subscriptions", "budget": "Wants", "type": "withdrawal"}, - {"match": "CLAUDE.AI", "account_name": "Claude.ai", "category": "Subscriptions", "budget": "Wants", "type": "withdrawal"}, - {"match": "OPENAI", "account_name": "OpenAI", "category": "Subscriptions", "budget": "Wants", "type": "withdrawal"}, - {"match": "YOUTUBE TV", "account_name": "YouTube TV", "category": "Subscriptions", "budget": "Wants", "type": "withdrawal"}, - {"match": "PEACOCK", "account_name": "Peacock", "category": "Subscriptions", "budget": "Wants", "type": "withdrawal"}, - - {"match": "MCDONALD", "account_name": "McDonald's", "category": "Restaurants", "budget": "Wants", "type": "withdrawal"}, - {"match": "PAMELA.?.?S? ?DINER|PAMELA'SDINER", "regex": true, "account_name": "Pamela's Diner", "category": "Restaurants", "budget": "Wants", "type": "withdrawal"}, - {"match": "PRIMANTI BROS", "account_name": "Primanti Bros", "category": "Restaurants", "budget": "Wants", "type": "withdrawal"}, - {"match": "MINEO'S|MINEOS", "regex": true, "account_name": "Mineo's Pizza", "category": "Restaurants", "budget": "Wants", "type": "withdrawal"}, - {"match": "DAVE AND ANDY|DAVE & ANDY", "regex": true, "account_name": "Dave & Andy's", "category": "Restaurants", "budget": "Wants", "type": "withdrawal"}, - - {"match": "STARBUCKS", "account_name": "Starbucks", "category": "Coffee", "budget": "Wants", "type": "withdrawal"}, - {"match": "TAZZA D|ENRICO'S TAZZA", "regex": true, "account_name": "Tazza D'Oro", "category": "Coffee", "budget": "Wants", "type": "withdrawal"}, - {"match": "LA GOURMANDINE", "account_name": "La Gourmandine", "category": "Coffee", "budget": "Wants", "type": "withdrawal"}, - {"match": "NEEDLE & BEAN|NEEDLE & BEAN|NEEDLE AND BEAN", "regex": true, "account_name": "Needle & Bean", "category": "Coffee", "budget": "Wants", "type": "withdrawal"}, - - {"match": "SHEETZ", "account_name": "Sheetz", "category": "Auto: Fuel", "type": "withdrawal"}, - {"match": "BP#9604786|UKANI BRO", "regex": true, "account_name": "BP", "category": "Auto: Fuel", "type": "withdrawal"}, - {"match": "24 7 TRAVEL ST", "account_name": "24/7 Travel Store", "category": "Auto: Fuel", "type": "withdrawal"}, - {"match": "PITT PARKING", "account_name": "Pitt Parking", "category": "Auto: Parking", "type": "withdrawal"}, - {"match": "T2\\* MT LEBANON", "regex": true, "account_name": "Mt Lebanon Parking", "category": "Auto: Parking", "type": "withdrawal"}, - - {"match": "GLOSS\\* JAYME|XCEPTIONAL STYLE", "regex": true, "account_name": "Xceptional Style", "category": "Personal Care", "budget": "Wants", "type": "withdrawal"} + { + "match": "DUQUESNE LIGHT", + "account_name": "Duquesne Light", + "category": "Utilities: Electric", + "budget": "Needs", + "type": "withdrawal" + }, + { + "match": "UNIV PITTSBURGH (PAYROLL|SALARY)", + "regex": true, + "account_name": "Pitt Salary", + "category": "Wages", + "type": "deposit" + }, + { + "match": "INTEREST PAYMENT", + "account_name": "Interest Income", + "category": "Investment: Interest", + "type": "deposit" + }, + { + "match": "IRS TREAS 310", + "account_name": "IRS Refund", + "category": "Taxes", + "type": "deposit" + }, + { + "match": "PITT TUITION", + "account_name": "University of Pittsburgh", + "category": "Education", + "type": "withdrawal" + }, + { + "match": "DAILY CASH ADJUSTMENT", + "account_name": "Apple Card Cashback", + "category": "Other", + "type": "deposit", + "review": true + }, + { + "match": "ATM SURCHARGE REIMB", + "account_name": "Don't Know", + "type": "deposit" + }, + { + "match": "YARDI PENNY TEST", + "account_name": "Don't Know", + "type": "deposit", + "review": true + }, + { + "match": "VENMO CASHOUT|CASH APP|ZEL FROM", + "regex": true, + "account_name": "Don't Know", + "type": "deposit", + "review": true + }, + { + "match": "ATM DEPOSIT", + "account_name": "Don't Know", + "type": "deposit", + "review": true + }, + { + "match": "AMZN|AMAZON", + "regex": true, + "account_name": "Amazon", + "review": true, + "type": "withdrawal", + "account_id": 720 + }, + { + "match": "EBAY", + "account_name": "eBay", + "review": true, + "type": "withdrawal", + "account_id": 622 + }, + { + "match": "SVDP", + "account_name": "St. Vincent de Paul", + "review": true, + "type": "withdrawal" + }, + { + "match": "WINE AND SPIRITS", + "account_name": "Fine Wine & Good Spirits", + "review": true, + "type": "withdrawal" + }, + { + "match": "COMCAST|XFINITY", + "regex": true, + "account_name": "Comcast / Xfinity", + "review": true, + "type": "withdrawal", + "account_id": 585 + }, + { + "match": "LIBERTY MUTUAL", + "account_name": "Liberty Mutual", + "review": true, + "type": "withdrawal", + "account_id": 871 + }, + { + "match": "JEGS", + "account_name": "JEGS", + "review": true, + "type": "withdrawal", + "account_id": 887 + }, + { + "match": "APEX RACE PARTS", + "account_name": "Apex Race Parts", + "review": true, + "type": "withdrawal", + "account_id": 594 + }, + { + "match": "ADVANCE AUTO", + "account_name": "Advance Auto Parts", + "review": true, + "type": "withdrawal" + }, + { + "match": "SUBARU OF SOUTH HILLS", + "account_name": "Subaru of South Hills", + "review": true, + "type": "withdrawal", + "account_id": 555 + }, + { + "match": "ALLEGHENY ARMS", + "account_name": "Allegheny Arms", + "category": "Recreation: Firearms", + "review": true, + "type": "withdrawal", + "account_id": 657 + }, + { + "match": "WILLI S SKI|WILLIS SKI", + "regex": true, + "account_name": "Willi's Ski Shop", + "category": "Recreation: Snowboarding", + "review": true, + "type": "withdrawal" + }, + { + "match": "CASTLE SHANNON SHOP", + "account_name": "Shop 'n Save", + "category": "Groceries", + "budget": "Needs", + "type": "withdrawal", + "account_id": 572 + }, + { + "match": "MARKET DISTRICT|GIANT EAGLE", + "regex": true, + "account_name": "Giant Eagle", + "category": "Groceries", + "budget": "Needs", + "type": "withdrawal", + "account_id": 592 + }, + { + "match": "KUHNS", + "account_name": "Kuhn's Market", + "category": "Groceries", + "budget": "Needs", + "type": "withdrawal", + "account_id": 563 + }, + { + "match": "COMPEER", + "account_name": "Compeer Investments", + "category": "Rent", + "budget": "Needs", + "type": "withdrawal" + }, + { + "match": "UPMC STUDENT INSURANCE", + "account_name": "UPMC Student Insurance", + "category": "Medical", + "budget": "Needs", + "type": "withdrawal", + "account_id": 612 + }, + { + "match": "SPIEGEL FREEDMAN", + "account_name": "Spiegel Freedman Psychological Associates", + "category": "Medical", + "budget": "Needs", + "type": "withdrawal" + }, + { + "match": "APPLE.COM", + "account_name": "Apple", + "category": "Subscriptions", + "budget": "Wants", + "type": "withdrawal" + }, + { + "match": "CLAUDE.AI", + "account_name": "Claude.ai", + "category": "Subscriptions", + "budget": "Wants", + "type": "withdrawal" + }, + { + "match": "OPENAI", + "account_name": "OpenAI", + "category": "Subscriptions", + "budget": "Wants", + "type": "withdrawal", + "account_id": 576 + }, + { + "match": "YOUTUBE TV", + "account_name": "YouTube TV", + "category": "Subscriptions", + "budget": "Wants", + "type": "withdrawal" + }, + { + "match": "PEACOCK", + "account_name": "Peacock", + "category": "Subscriptions", + "budget": "Wants", + "type": "withdrawal", + "account_id": 607 + }, + { + "match": "MCDONALD", + "account_name": "McDonald's", + "category": "Restaurants", + "budget": "Wants", + "type": "withdrawal", + "account_id": 580 + }, + { + "match": "PAMELA.?.?S? ?DINER|PAMELA'SDINER", + "regex": true, + "account_name": "Pamela's Diner", + "category": "Restaurants", + "budget": "Wants", + "type": "withdrawal" + }, + { + "match": "PRIMANTI BROS", + "account_name": "Primanti Bros", + "category": "Restaurants", + "budget": "Wants", + "type": "withdrawal", + "account_id": 747 + }, + { + "match": "MINEO'S|MINEOS", + "regex": true, + "account_name": "Mineo's Pizza", + "category": "Restaurants", + "budget": "Wants", + "type": "withdrawal" + }, + { + "match": "DAVE AND ANDY|DAVE & ANDY", + "regex": true, + "account_name": "Dave & Andy's", + "category": "Restaurants", + "budget": "Wants", + "type": "withdrawal", + "account_id": 769 + }, + { + "match": "STARBUCKS", + "account_name": "Starbucks", + "category": "Coffee", + "budget": "Wants", + "type": "withdrawal", + "account_id": 611 + }, + { + "match": "TAZZA D|ENRICO'S TAZZA", + "regex": true, + "account_name": "Tazza D'Oro", + "category": "Coffee", + "budget": "Wants", + "type": "withdrawal" + }, + { + "match": "LA GOURMANDINE", + "account_name": "La Gourmandine", + "category": "Coffee", + "budget": "Wants", + "type": "withdrawal", + "account_id": 595 + }, + { + "match": "NEEDLE & BEAN|NEEDLE & BEAN|NEEDLE AND BEAN", + "regex": true, + "account_name": "Needle & Bean", + "category": "Coffee", + "budget": "Wants", + "type": "withdrawal", + "account_id": 660 + }, + { + "match": "SHEETZ", + "account_name": "Sheetz", + "category": "Auto: Fuel", + "type": "withdrawal", + "account_id": 566 + }, + { + "match": "BP#9604786|UKANI BRO", + "regex": true, + "account_name": "BP", + "category": "Auto: Fuel", + "type": "withdrawal" + }, + { + "match": "24 7 TRAVEL ST", + "account_name": "24/7 Travel Store", + "category": "Auto: Fuel", + "type": "withdrawal" + }, + { + "match": "PITT PARKING", + "account_name": "Pitt Parking", + "category": "Auto: Parking", + "type": "withdrawal", + "account_id": 870 + }, + { + "match": "T2\\* MT LEBANON", + "regex": true, + "account_name": "Mt Lebanon Parking", + "category": "Auto: Parking", + "type": "withdrawal" + }, + { + "match": "GLOSS\\* JAYME|XCEPTIONAL STYLE", + "regex": true, + "account_name": "Xceptional Style", + "category": "Personal Care", + "budget": "Wants", + "type": "withdrawal" + } ] -} +} \ No newline at end of file diff --git a/migration/README.md b/migration/README.md new file mode 100644 index 0000000..9088477 --- /dev/null +++ b/migration/README.md @@ -0,0 +1,78 @@ +# Firefly rebuild runbook + +One-time migration: wipe the CSV-era transactions and rebuild from +FITID-stable QFX so every transaction has a permanent dedup key and a clean +account taxonomy. Read this before running anything in this folder. + +## Why a rebuild (not in-place cleanup) + +Firefly history is young (everything ~Aug 2025+, ~950 txns, minimal manual +data). Old CSV imports left ~343 fragmented junk expense accounts and no +stable external_ids. A clean rebuild keyed on QFX `FITID` is a better +foundation than reassigning junk in place. Decided 2026-05-17. + +## Hard prerequisites (do not skip) + +1. **Firefly DB backup.** Destructive, no undo. Do not run the wipe until a + DB dump/snapshot exists. +2. **Exports** (in `../EXPORTS/`, gitignored): Apple/PNC/Costco QFX, Aug 2025 + -> now, FITID on 100% of rows. Schwab/Coinbase/Cash (~35 txns) are + CSV-only/manual, handled separately. + +## Reconciliation (the trust gate) + +Per account: `opening_balance = QFX_ledger - sum(all that account's lines)`. +Classification (transfer vs expense) never changes an account's own balance, +so `opening + sum == ledger` must hold to the cent before trusting the wipe. +Verified: PNC opening $6,866.10, Apple -$4,498.79, Costco -$2,541.57 (all +tie). `rebuild_dryrun.py` recomputes this; re-run after any change. + +## Classification rules (PNC = the hub) + +- **Transfers** -- ALWAYS owned by the PNC leg: PNC's posting date and PNC's + FITID are authoritative, the card/brokerage counterpart line is paired by + amount (+/- a few days) and dropped. Every transfer lives under PNC, one + consistent date, never double-counted. Pairs: APPLECARD GSBANK -> Apple + Credit Card; CITI AUTOPAY -> Costco Visa Card; SCHWAB MONEYLINK -> Schwab + Stocks/Savings (disambiguate by amount); ATM WITHDRAWAL -> Cash; CARVANA + PAYOUT -> Illiquid Assets; big ATM DEPOSIT -> Coverdell; CAPITAL ONE -> + Capital One (closed). Codified in the skill's `references/transfers.md`. +- **Income/expense**: Pitt salary -> Wages; Duquesne Light -> Utilities: + Electric; Compeer -> Rent; etc. +- **Don't Know**: Venmo/CashApp/Zelle ("poker"), unrecallable checks, unknown + ATM deposits -> the `Don't Know` account, review later. Never guessed. +- **Special accounts**: `Illiquid Assets` (cars; sale = transfer in), + `Don't Know` (catch-all). See the skill's memory / taxonomy notes. + +## Investment accounts + +Do NOT transaction-import Schwab/Roth/Coverdell/Coinbase (noise, and assets +!= currency). Model as monthly-valued: opening balance + external MoneyLink +transfers (from the PNC side) + one monthly valuation adjustment booked to +`Investment Appreciation` / `Investment: Interest`. Dane supplies the current +value at import; delta = the adjustment. Savings<->Stocks journals are +transfers. + +## Execution order + +1. `python rebuild_dryrun.py` -> confirm all accounts still reconcile. +2. Build the full normalized dataset (PNC + Apple + Costco, transfers typed, + payments paired/deduped, opening balances set). +3. Drive review via the skill's browser workflow + (`references/review-workflow.md`): `--review-html`, resolve the ~190 tail + merchants in-situ (search-then-ask, <80% => ask), Export `decisions.json`. +4. **Confirm DB backup exists.** +5. Wipe transactions, prune empty junk expense accounts. +6. `--decisions decisions.json --post`. Reconcile final balances against the + derived figures above. + +## Files here + +- `rebuild_pnc.py` -- PNC classifier + reconciliation (read-only) +- `rebuild_dryrun.py` -- consolidated per-account reconciliation (read-only) +- `pnc_classified.json` -- PNC classification output +- `merchant_clusters.{json,md}` -- cluster proposal (taxonomy bootstrap) +- `mock_firefly.py` -- stdlib mock used for skill eval/testing +- `*review_preview*.html` -- review-UI previews on real data + +Nothing here writes to Firefly except the final `--post` in step 6. diff --git a/migration/build_rebuild_dataset.py b/migration/build_rebuild_dataset.py new file mode 100644 index 0000000..dbb73fa --- /dev/null +++ b/migration/build_rebuild_dataset.py @@ -0,0 +1,116 @@ +"""Build the full rebuild dataset from the 3 QFX (READ-ONLY). + +Emits one normalized.json (the skill's schema) for ALL of PNC + Apple + +Costco, with: + - transfers OWNED BY THE PNC LEG (PNC date + FITID authoritative); the + Apple PAYMENT lines and Costco positive AUTOPAY lines are the + counterparts and are DROPPED (paired by amount, +/- 6 days). + - PNC classified per the runbook (income / expense / Don't Know / special). + - Apple/Costco: negative = withdrawal (merchant), positive = deposit + (refund). merchant_map matching is left to firefly_import.py downstream. + - per-account reconciliation: opening + sum(its kept lines) must == QFX + ledger, else abort (no silent data loss). + +Nothing is posted. Output feeds `firefly_import.py --emit-plan/--review-html`. +""" +import re, json, hashlib, sys +from collections import Counter + +D = "/Users/danesabo/Documents/Finances/EXPORTS/-MAY172026" +SRC = { + "PNC Checking": (f"{D}/PNC7552Aug012025-May152025.QFX", "pnc"), + "Apple Credit Card": (f"{D}/Apple Card Transactions Aug 01 2025 - May 17 2026.qfx", "apple"), + "Costco Visa Card": (f"{D}/CitiCostcoCard Aug012025-May172025.QFX","costco"), +} + +def parse(path): + t = open(path, encoding="latin-1", errors="replace").read() + m = re.search(r".*?([^<\r\n]*)", t, re.S | re.I) + ledger = float(m.group(1)) + blocks = re.findall(r"(.*?)(?=|)", t, re.S | re.I) + def g(b, k): + mm = re.search(rf"<{k}>([^<\r\n]*)", b, re.I) + return mm.group(1).strip() if mm else "" + out = [] + for b in blocks: + out.append({"date": g(b, "DTPOSTED")[:8], "amt": float(g(b, "TRNAMT")), + "ttype": g(b, "TRNTYPE").upper(), + "desc": (g(b, "NAME") + " " + g(b, "MEMO")).strip(), + "fitid": g(b, "FITID")}) + return ledger, out + +def iso(d): # YYYYMMDD -> YYYY-MM-DD + return f"{d[:4]}-{d[4:6]}-{d[6:8]}" if len(d) >= 8 else d + +# ---- PNC classification (runbook) --------------------------------------- +def classify_pnc(desc, amt): + d = desc.upper() + if "APPLECARD GSBANK PAYMENT" in d: return ("transfer", "Apple Credit Card") + if "CITI AUTOPAY PAYMENT" in d: return ("transfer", "Costco Visa Card") + if "SCHWAB BROKERAGE MONEYLINK" in d: + # amount disambiguation per the Schwab JSONs + return ("transfer", "Schwab Savings" if abs(amt) in (5000.0, 3550.0) + else "Schwab Stocks") + if "ATM WITHDRAWAL" in d: return ("transfer", "Cash") + if "CARVANA PAYOUT" in d: return ("transfer", "Illiquid Assets") + if "ATM DEPOSIT" in d and abs(amt) > 10000: return ("transfer", "Coverdell") + if "CAPITAL ONE TRANSFER" in d: return ("transfer", "Capital One") + if "UNIV PITTSBURGH" in d and ("PAYROLL" in d or "SALARY" in d): + return ("deposit", "Pitt Salary") + if "INTEREST PAYMENT" in d: return ("deposit", "Interest Income") + if "IRS TREAS 310" in d: return ("deposit", "IRS Refund") + if "DUQUESNE LIGHT" in d: return ("withdrawal", "Duquesne Light") + if "COMPEER" in d: return ("withdrawal", "Compeer Investments") + if "PITT TUITION" in d: return ("withdrawal", "University of Pittsburgh") + if any(k in d for k in ("VENMO CASHOUT","CASH APP","ZEL FROM","ATM SURCHARGE","YARDI")): + return ("dontknow", "Don't Know") + return ("raw", None) # leave to merchant_map / review downstream + +records, recon, dropped = [], {}, Counter() +for acct, (path, tag) in SRC.items(): + ledger, txns = parse(path) + s = round(sum(t["amt"] for t in txns), 2) + opening = round(ledger - s, 2) + recon[acct] = {"ledger": ledger, "sum": s, "opening": opening, + "ties": abs(opening + s - ledger) < 0.01} + for t in txns: + amt, d = t["amt"], t["desc"] + ext = f"{tag}:{t['fitid'] or hashlib.sha1((iso(t['date'])+d+str(amt)).encode()).hexdigest()[:16]}" + if acct == "Apple Credit Card" and t["ttype"] == "PAYMENT": + dropped["apple_payment(paired->PNC)"] += 1; continue + if acct == "Costco Visa Card" and amt > 0 and "AUTOPAY" in d.upper(): + dropped["costco_autopay(paired->PNC)"] += 1; continue + rec = {"date": iso(t["date"]), "amount": f"{abs(amt):.2f}", + "description": d, "asset_account": acct, "source_tag": tag, + "source_txn_id": t["fitid"] or None, "currency_code": "USD"} + if acct == "PNC Checking": + kind, target = classify_pnc(d, amt) + if kind == "transfer": + rec["type"] = "transfer" + if amt < 0: rec["destination_account"] = target + else: rec["type"] = "transfer"; rec["asset_account"] = target; rec["destination_account"] = "PNC Checking" + elif kind in ("deposit", "withdrawal"): + rec["type"] = kind; rec["_canonical"] = target + elif kind == "dontknow": + rec["type"] = "withdrawal" if amt < 0 else "deposit" + rec["_canonical"] = "Don't Know" + else: + rec["type"] = "withdrawal" if amt < 0 else "deposit" + else: + rec["type"] = "withdrawal" if amt < 0 else "deposit" + records.append(rec) + +print("=== RECONCILIATION (must all tie) ===") +ok = True +for a, r in recon.items(): + flag = "OK" if r["ties"] else "*** MISMATCH ***" + ok &= r["ties"] + print(f" {a:20} ledger {r['ledger']:>11,.2f} Σ {r['sum']:>11,.2f} " + f"opening {r['opening']:>11,.2f} {flag}") +print("dropped (paired counterparts):", dict(dropped)) +print(f"normalized records: {len(records)}") +if not ok: + print("ABORT: a reconciliation does not tie.", file=sys.stderr); sys.exit(1) +json.dump(records, open("/tmp/rebuild_normalized.json", "w"), indent=1) +json.dump(recon, open("/tmp/rebuild_recon.json", "w"), indent=1) +print("wrote /tmp/rebuild_normalized.json") diff --git a/migration/pnc_review_preview.html b/migration/pnc_review_preview.html new file mode 100644 index 0000000..7383ae2 --- /dev/null +++ b/migration/pnc_review_preview.html @@ -0,0 +1,299 @@ + + + + + +Firefly import review + + + +
+

Firefly import review

+
+
+ + +
+ +
+

Needs Clarity UNMATCHED + REVIEW — set the + canonical account, category, budget, then approve

+ + + +
DateAmountDescriptionAccountCategoryBudgetCommentDecision
+ +
+ +
+

Auto-Proposed matched a rule — approved by + default, deny or edit if wrong

+ + + +
DateAmountDescriptionAccountCategoryBudgetCommentDecision
+ +
+ +
+

All Transactions complete picture, read-only + (includes skipped duplicates)

+ + + +
DateAmountTypeDescriptionBucketTarget
+
+ +
+ Decisions are exported as decisions.json (keyed by + external_id). Re-run + firefly_import.py <normalized> --decisions decisions.json --post + to post only approved rows. +
+ + + + diff --git a/migration/rebuild_clusters.json b/migration/rebuild_clusters.json new file mode 100644 index 0000000..7f203b8 --- /dev/null +++ b/migration/rebuild_clusters.json @@ -0,0 +1,6229 @@ +{ + "summary": { + "total_clusters": 386, + "auto_proposable": 142, + "needs_dane": 244, + "statement_txns_folded": 1017 + }, + "clusters": [ + { + "canonical": "Amazon", + "confidence": 0.57, + "needs_dane": true, + "weight": 75, + "stmt_txns": 47, + "n_accounts": 28, + "account_ids": [ + 720, + 743, + 741, + 735, + 742, + 733, + 727, + 726, + 734, + 736, + 746, + 752, + 749, + 755, + 643, + 677, + 763, + 765, + 704, + 634, + 548, + 800, + 804, + 778, + 764, + 798, + 809, + 552 + ], + "account_names": [ + "Amazon", + "Amazon Mark* B008z3vv0", + "Amazon Mark* B00sf6vv0", + "Amazon Mark* B00sf6vv0410 Terry Avenue North Seattle 98109 Wa Usa (return)", + "Amazon Mark* B03y156k1", + "Amazon Mark* B204t9m31", + "Amazon Mark* B20ut4rs0", + "Amazon Mark* B25qs1we0", + "Amazon Mark* B27fz6gt2", + "Amazon Mark* B28op50v1", + "Amazon Mark* B84433ru2", + "Amazon Mark* B88vj1ll0", + "Amazon Mark* B89cq33g2", + "Amazon Mark* Bt7zy30r2", + "Amazon Mark* I69685u13", + "Amazon Mark* Lb5ys5vb3", + "Amazon Mark* N484d5nb2", + "Amazon Mark* Nu7oo9i42", + "Amazon Mark* Vt2ln6iq3", + "Amazon Mark* Wi45d1dp3", + "Amazon Marketplace", + "Amazon Mktpl*6s14s2t43", + "Amazon Mktpl*ll1ai1jm3", + "Amazon Mktpl*nf5182h32", + "Amazon Mktpl*nu6416y72", + "Amazon Mktpl*w495c37y3", + "Amazon Mktpl*xm9kf5vl3", + "Amazon Prime" + ], + "descriptor_samples": [ + "AMAZON MARK* B00SF6VV0410 TERRY", + "AMAZON.COM*9R3UC0N93 440 TERRY A", + "AMAZON.COM*N428X9Q71 440 TERRY A", + "AMAZON MARK* B008Z3VV0410 TERRY", + "AMAZON MARK* B03Y156K1410 TERRY", + "AMAZON MARK* B204T9M31410 TERRY" + ] + }, + { + "canonical": "University Of Pittsburgh|Pitt Parking Pay Stati127 North", + "confidence": 0.4, + "needs_dane": true, + "weight": 56, + "stmt_txns": 56, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "PITT PARKING PAY STATI127 NORTH" + ] + }, + { + "canonical": "GomobilePGH", + "confidence": 1.0, + "needs_dane": false, + "weight": 49, + "stmt_txns": 45, + "n_accounts": 4, + "account_ids": [ + 865, + 642, + 559, + 781 + ], + "account_names": [ + "GomobilePGH", + "Gomobilepgh 1", + "Gomobilepgh 2", + "Gomobilepgh 3" + ], + "descriptor_samples": [ + "GOMOBILEPGH 2 232 BOULEVARD OF T", + "GOMOBILEPGH 1 232 BOULEVARD OF T", + "GOMOBILEPGH 3 232 BOULEVARD OF T" + ] + }, + { + "canonical": "Sheetz", + "confidence": 1.0, + "needs_dane": false, + "weight": 43, + "stmt_txns": 36, + "n_accounts": 7, + "account_ids": [ + 566, + 744, + 739, + 567, + 774, + 794, + 738 + ], + "account_names": [ + "Sheetz", + "Sheetz 0353", + "Sheetz 0678", + "Sheetz 2353", + "Sheetz 2515", + "Sheetz 2677", + "Sheetz 2678" + ], + "descriptor_samples": [ + "SHEETZ 0353 5410 CAMPBELLS RUN R", + "SHEETZ 2353 5410 CAMPBELLS RUN R", + "SHEETZ 2515 4599 LIBRARY ROAD BE", + "SHEETZ 0152 3611 FOURTH AVE BEAV", + "SHEETZ 0719 1312 SOUTH MAIN STRE", + "SHEETZ 2678 973 WILLIAM FLYNN HI" + ] + }, + { + "canonical": "McDonald's", + "confidence": 0.78, + "needs_dane": true, + "weight": 37, + "stmt_txns": 30, + "n_accounts": 7, + "account_ids": [ + 580, + 732, + 688, + 661, + 831, + 635, + 678 + ], + "account_names": [ + "McDonald's", + "Mcdonald's F1102", + "Mcdonald's F1862", + "Mcdonald's F27387", + "Mcdonalds 1862", + "Mcdonalds 33234", + "Mcdonalds 5834" + ], + "descriptor_samples": [ + "MCDONALDS 1862 3708 FORBES AVE P", + "MCDONALDS 1102 225 MOUNT LEBANON", + "MCDONALD'S F1862 3708 FORBES AVE", + "MCDONALD'S F1102 225 MT LEBANON", + "MCDONALDS 5834 2518 W LIBERTY RD", + "MCDONALD'S F27387 1412 B MAIN ST" + ] + }, + { + "canonical": "Castle Shannon Shop", + "confidence": 1.0, + "needs_dane": true, + "weight": 30, + "stmt_txns": 30, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CASTLE SHANNON SHOP' 799 CASTLE" + ] + }, + { + "canonical": "Market District", + "confidence": 0.71, + "needs_dane": true, + "weight": 30, + "stmt_txns": 28, + "n_accounts": 2, + "account_ids": [ + 863, + 547 + ], + "account_names": [ + "Market District", + "Market District Supermarket" + ], + "descriptor_samples": [ + "MARKET DISTRICT #0014 7000 OXFOR", + "MARKET DISTRICT #0047 100 SETTLE" + ] + }, + { + "canonical": "Autozone", + "confidence": 1.0, + "needs_dane": false, + "weight": 27, + "stmt_txns": 21, + "n_accounts": 6, + "account_ids": [ + 593, + 812, + 724, + 714, + 591, + 806 + ], + "account_names": [ + "Autozone", + "Autozone #4670", + "Autozone #4690", + "Autozone #4690 322 Washington Rd Pittsburgh 15216 Pa Usa (return)", + "Autozone #5505", + "Autozone #5505 6581 Steubenville Pike Crafton 15205 Pa Usa (return)" + ], + "descriptor_samples": [ + "AUTOZONE #5505 6581 STEUBENVILLE", + "AUTOZONE #4690 322 WASHINGTON RD", + "AUTOZONE 9353 936 S MILLVALE AVE", + "AUTOZONE #4670 500 PINE HOLLOW R" + ] + }, + { + "canonical": "Sunoco", + "confidence": 1.0, + "needs_dane": false, + "weight": 27, + "stmt_txns": 21, + "n_accounts": 6, + "account_ids": [ + 599, + 638, + 827, + 767, + 820, + 715 + ], + "account_names": [ + "Sunoco", + "Sunoco 0002419012 Qps", + "Sunoco 0501481601 Qps", + "Sunoco 0859331103 Qps", + "Sunoco 8001384502 Qps", + "Sunoco 8001687502 Qps" + ], + "descriptor_samples": [ + "SUNOCO 0002419012 QPS1721 BANKSV", + "SUNOCO 8001687502 QPS339 COCHRAN", + "SUNOCO 8000157402 QPS195 N CRAIG", + "SUNOCO 0062400700 QPS300 GRANT A", + "SUNOCO 0859331103 QPS301 CRAFT A", + "SUNOCO 8001384502 QPS3505 LIBRAR" + ] + }, + { + "canonical": "Costco Whse", + "confidence": 1.0, + "needs_dane": false, + "weight": 22, + "stmt_txns": 20, + "n_accounts": 2, + "account_ids": [ + 842, + 836 + ], + "account_names": [ + "COSTCO WHSE #0332 PITTSBURGH PA", + "COSTCO WHSE #0649 WEST HOMESTEAPA" + ], + "descriptor_samples": [ + "COSTCO WHSE #0649 WEST HOME", + "COSTCO WHSE #0332 PITTSBURG" + ] + }, + { + "canonical": "Apple Com Bill One Apple", + "confidence": 0.4, + "needs_dane": true, + "weight": 18, + "stmt_txns": 18, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "APPLE.COM/BILL ONE APPLE PARK WA", + "APPLE.COM/US ONE APPLE PARK WAY", + "APPLE.COM/BILL ONE APPLE PARK CU" + ] + }, + { + "canonical": "Compeer", + "confidence": 0.47, + "needs_dane": true, + "weight": 18, + "stmt_txns": 10, + "n_accounts": 8, + "account_ids": [ + 894, + 521, + 532, + 526, + 527, + 528, + 530, + 522 + ], + "account_names": [ + "COMPEER-COMP-CP WEB PMTS ACH WEB 3Y6QDL", + "COMPEER-COMP-CP WEB PMTS ACH WEB 7Y648K", + "COMPEER-COMP-CP WEB PMTS ACH WEB D9FZ0L", + "COMPEER-COMP-CP WEB PMTS ACH WEB F394TK", + "COMPEER-COMP-CP WEB PMTS ACH WEB JS0NNK", + "COMPEER-COMP-CP WEB PMTS ACH WEB K7TDFK", + "COMPEER-COMP-CP WEB PMTS ACH WEB R34S6L", + "Compeer" + ], + "descriptor_samples": [ + "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB C5R6SL", + "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB MD64LL", + "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB 3Y6QDL", + "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB R34S6L", + "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB D9FZ0L", + "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB F394TK" + ] + }, + { + "canonical": "Harbor Freight Tools", + "confidence": 0.95, + "needs_dane": false, + "weight": 18, + "stmt_txns": 15, + "n_accounts": 3, + "account_ids": [ + 878, + 569, + 737 + ], + "account_names": [ + "Harbor Freight Tools", + "Harbor Freight Tools 2", + "Harbor Freight Tools34" + ], + "descriptor_samples": [ + "HARBOR FREIGHT TOOLS 25185 CAMPB" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran", + "confidence": 0.4, + "needs_dane": true, + "weight": 18, + "stmt_txns": 18, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *LA GOURMANDINE OAK116 MEYRAN" + ] + }, + { + "canonical": "Kuhns Banksville", + "confidence": 1.0, + "needs_dane": true, + "weight": 17, + "stmt_txns": 17, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "KUHNS BANKSVILLE 3125 BANKSVILLE" + ] + }, + { + "canonical": "Petco", + "confidence": 1.0, + "needs_dane": false, + "weight": 15, + "stmt_txns": 11, + "n_accounts": 4, + "account_ids": [ + 546, + 729, + 797, + 633 + ], + "account_names": [ + "Petco", + "Petco 1811", + "Petco 1812", + "Petco 1819" + ], + "descriptor_samples": [ + "PETCO 1819 59 FORT COUCH ROAD BE", + "PETCO 1811 590 EAST WATERFRONT D", + "PETCO 1819 59 FORT COUCH RD BETH", + "PETCO 1812 251 CLAIRTON BLVD. PI" + ] + }, + { + "canonical": "Chick-fil-A", + "confidence": 1.0, + "needs_dane": false, + "weight": 14, + "stmt_txns": 9, + "n_accounts": 5, + "account_ids": [ + 630, + 810, + 832, + 712, + 702 + ], + "account_names": [ + "Chick-Fil-A", + "Chick-fil-A", + "Chick-fil-a #01477", + "Chick-fil-a #01765", + "Chick-fil-a #03763" + ], + "descriptor_samples": [ + "CHICK-FIL-A #01765 1620 WASHINGT", + "CHICK-FIL-A #01477 480 WATERFRON", + "CHICK-FIL-A #01583 1700 ROUTE 22", + "CHICK-FIL-A #01297 100 ROBINSON", + "CHICK-FIL-A #03763 1625 SW WANAM", + "CHICK-FIL-A #03972 120 ANDREW DR" + ] + }, + { + "canonical": "Costco Gas", + "confidence": 1.0, + "needs_dane": false, + "weight": 14, + "stmt_txns": 12, + "n_accounts": 2, + "account_ids": [ + 840, + 837 + ], + "account_names": [ + "COSTCO GAS #0332 PITTSBURGH PA", + "COSTCO GAS #0649 WEST HOMESTEAPA" + ], + "descriptor_samples": [ + "COSTCO GAS #0649 WEST HOMES", + "COSTCO GAS #0332 PITTSBURGH" + ] + }, + { + "canonical": "Starbucks", + "confidence": 0.75, + "needs_dane": true, + "weight": 13, + "stmt_txns": 9, + "n_accounts": 4, + "account_ids": [ + 611, + 771, + 792, + 748 + ], + "account_names": [ + "Starbucks", + "Starbucks 27117", + "Starbucks 8007827282", + "Starbucks Store 27117" + ], + "descriptor_samples": [ + "STARBUCKS STORE 27117 4022 FIFTH", + "STARBUCKS 27117 4022 5TH AVE PIT", + "STARBUCKS 8007827282 2401 UTAH A" + ] + }, + { + "canonical": "Claude Ai Subscription548 Market", + "confidence": 0.4, + "needs_dane": true, + "weight": 11, + "stmt_txns": 11, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CLAUDE.AI SUBSCRIPTION548 MARKET" + ] + }, + { + "canonical": "Duquesne Light", + "confidence": 0.61, + "needs_dane": true, + "weight": 11, + "stmt_txns": 9, + "n_accounts": 2, + "account_ids": [ + 893, + 520 + ], + "account_names": [ + "DUQUESNE LIGHT PAYMENT ACH DEBIT xxxxxx5333", + "Duquesne Light" + ], + "descriptor_samples": [ + "DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH DEBIT xxxxxx5333" + ] + }, + { + "canonical": "T2", + "confidence": 0.4, + "needs_dane": true, + "weight": 11, + "stmt_txns": 10, + "n_accounts": 1, + "account_ids": [ + 549 + ], + "account_names": [ + "T2* Mt Lebanon Pa" + ], + "descriptor_samples": [ + "T2* MT LEBANON PA 8900 KEYSTONE" + ] + }, + { + "canonical": "Comcast / Xfinity", + "confidence": 1.0, + "needs_dane": true, + "weight": 10, + "stmt_txns": 9, + "n_accounts": 1, + "account_ids": [ + 585 + ], + "account_names": [ + "Comcast / Xfinity" + ], + "descriptor_samples": [ + "COMCAST / XFINITY 15 SUMMIT PARK" + ] + }, + { + "canonical": "D J*wsj", + "confidence": 1.0, + "needs_dane": false, + "weight": 10, + "stmt_txns": 9, + "n_accounts": 1, + "account_ids": [ + 553 + ], + "account_names": [ + "D J*wsj" + ], + "descriptor_samples": [ + "D J*WSJ 4300 RTE 1 N SOUTH BRUNS", + "D J*WSJ 4300 RTE 1 N 800-568-762", + "D J*WSJ 4300 RTE 1 N MONMOUTH J0", + "D J*WSJ 4300 RTE 1 N MONMOUTH JC" + ] + }, + { + "canonical": "Interest Payment Interest Payment", + "confidence": 1.0, + "needs_dane": true, + "weight": 10, + "stmt_txns": 10, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "INTEREST PAYMENT INTEREST PAYMENT" + ] + }, + { + "canonical": "Rockauto", + "confidence": 0.94, + "needs_dane": false, + "weight": 10, + "stmt_txns": 9, + "n_accounts": 1, + "account_ids": [ + 557 + ], + "account_names": [ + "Rockauto" + ], + "descriptor_samples": [ + "ROCK AUTO 6418 NORMANDY LANE MAD" + ] + }, + { + "canonical": "University Club", + "confidence": 0.86, + "needs_dane": false, + "weight": 10, + "stmt_txns": 8, + "n_accounts": 2, + "account_ids": [ + 867, + 637 + ], + "account_names": [ + "Pitt University Club", + "University Club" + ], + "descriptor_samples": [ + "PITT UNIVERSITY CLUB 123 UNIVERS" + ] + }, + { + "canonical": "Upmc Student Insurance600 Grant", + "confidence": 0.4, + "needs_dane": true, + "weight": 10, + "stmt_txns": 10, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "UPMC STUDENT INSURANCE600 GRANT" + ] + }, + { + "canonical": "Applecard Gsbank Payment Ach Web", + "confidence": 0.4, + "needs_dane": true, + "weight": 9, + "stmt_txns": 9, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT ACH WEB-RECUR xxxxx9213", + "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT ACH WEB xxxxx9213" + ] + }, + { + "canonical": "Chikn Oakland", + "confidence": 1.0, + "needs_dane": false, + "weight": 9, + "stmt_txns": 8, + "n_accounts": 1, + "account_ids": [ + 558 + ], + "account_names": [ + "Chikn Oakland" + ], + "descriptor_samples": [ + "TST*CHIKN OAKLAND 3712 FORBES AV" + ] + }, + { + "canonical": "Citi Autopay Payment Ach Web", + "confidence": 0.4, + "needs_dane": true, + "weight": 9, + "stmt_txns": 9, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xxxxxxxxxxx0023", + "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xxxxxxxxxxx0165", + "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xxxxxxxxxxx0049", + "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xxxxxxxxxxx0220", + "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xxxxxxxxxxx0097", + "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xxxxxxxxxxx0320" + ] + }, + { + "canonical": "Daily Cash Adjustment", + "confidence": 1.0, + "needs_dane": true, + "weight": 9, + "stmt_txns": 9, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "DAILY CASH ADJUSTMENT" + ] + }, + { + "canonical": "Raising Cane's", + "confidence": 1.0, + "needs_dane": false, + "weight": 9, + "stmt_txns": 6, + "n_accounts": 3, + "account_ids": [ + 868, + 561, + 828 + ], + "account_names": [ + "Raising Cane's", + "Raising Canes 0934", + "Raising Canes 1002" + ], + "descriptor_samples": [ + "RAISING CANES 0934 3610 FIFTH AV", + "RAISING CANES 1002 348 LINCOLN H" + ] + }, + { + "canonical": "Barnes & Noble", + "confidence": 0.9, + "needs_dane": false, + "weight": 7, + "stmt_txns": 4, + "n_accounts": 3, + "account_ids": [ + 603, + 817, + 658 + ], + "account_names": [ + "Barnes & Noble", + "Barnes & Noble #2233", + "Barnes & Noble 2367" + ], + "descriptor_samples": [ + "BARNES & NOBLE #2233 301 S H", + "BARNES & NOBLE 2367 800 SETT" + ] + }, + { + "canonical": "Ebay O", + "confidence": 1.0, + "needs_dane": true, + "weight": 7, + "stmt_txns": 7, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "EBAY O*07-14287-66191 2535 NORTH", + "EBAY O*07-14287-66190 2535 NORTH", + "EBAY O*07-14287-66189 2535 NORTH", + "EBAY O*07-14287-66188 2535 NORTH", + "EBAY O*07-14287-66187 2535 NORTH", + "EBAY O*07-14287-66186 2535 NORTH" + ] + }, + { + "canonical": "Lowe's", + "confidence": 1.0, + "needs_dane": false, + "weight": 7, + "stmt_txns": 6, + "n_accounts": 1, + "account_ids": [ + 673 + ], + "account_names": [ + "Lowe's" + ], + "descriptor_samples": [ + "LOWES #01200* 400 DAVIS BLVD. PI", + "LOWES #00780* 690 WATERFRONT DRI" + ] + }, + { + "canonical": "Needle & Bean", + "confidence": 0.9, + "needs_dane": true, + "weight": 7, + "stmt_txns": 6, + "n_accounts": 1, + "account_ids": [ + 660 + ], + "account_names": [ + "Needle & Bean" + ], + "descriptor_samples": [ + "SQ *NEEDLE & BEAN 320 CASTLE" + ] + }, + { + "canonical": "PMUSA", + "confidence": 1.0, + "needs_dane": false, + "weight": 7, + "stmt_txns": 5, + "n_accounts": 2, + "account_ids": [ + 885, + 614 + ], + "account_names": [ + "PMUSA", + "Pmusa 281094 Universit" + ], + "descriptor_samples": [ + "PMUSA 281094 UNIVERSIT1100 SPRIN" + ] + }, + { + "canonical": "University Of Pittsburgh|Univ Pittsburgh Salary Ach Credi", + "confidence": 0.4, + "needs_dane": true, + "weight": 7, + "stmt_txns": 7, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "UNIV PITTSBURGH SALARY ACH CREDI UNIV PITTSBURGH SALARY ACH CREDIT xx0275" + ] + }, + { + "canonical": "Youtube Tv", + "confidence": 1.0, + "needs_dane": true, + "weight": 7, + "stmt_txns": 7, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "GOOGLE *YOUTUBE TV 1600 AMPHITHE" + ] + }, + { + "canonical": "Home Depot", + "confidence": 0.83, + "needs_dane": false, + "weight": 6, + "stmt_txns": 5, + "n_accounts": 1, + "account_ids": [ + 722 + ], + "account_names": [ + "Home Depot" + ], + "descriptor_samples": [ + "THE HOME DEPOT #4176 4000 OXFORD" + ] + }, + { + "canonical": "Liberty Mutual", + "confidence": 0.62, + "needs_dane": true, + "weight": 6, + "stmt_txns": 4, + "n_accounts": 2, + "account_ids": [ + 596, + 871 + ], + "account_names": [ + "Liberty Mutual" + ], + "descriptor_samples": [ + "LIBERTY MUTUAL 175 BERKELEY ST 8", + "LIBERTY MUTUAL ATTN: COURTNEY MU" + ] + }, + { + "canonical": "Openai", + "confidence": 0.53, + "needs_dane": true, + "weight": 6, + "stmt_txns": 4, + "n_accounts": 2, + "account_ids": [ + 576, + 780 + ], + "account_names": [ + "Openai", + "Openai *chatgpt Subscr" + ], + "descriptor_samples": [ + "OPENAI *CHATGPT SUBSCR548 MARKET", + "OPENAI 1455 3RD STREET SAN FRANC" + ] + }, + { + "canonical": "REI", + "confidence": 1.0, + "needs_dane": false, + "weight": 6, + "stmt_txns": 4, + "n_accounts": 2, + "account_ids": [ + 684, + 682 + ], + "account_names": [ + "REI", + "Rei #14 Manhattan Bh 1800 Rosecrans Ave Bldg E Manhattan Bea90266 Ca Usa (return)" + ], + "descriptor_samples": [ + "REI #14 MANHATTAN BH 1800 ROSECR", + "REI #182 DILLON 306 DILLON RIDGE" + ] + }, + { + "canonical": "Spo P&Amp Gspamelasdiner3703 F", + "confidence": 0.4, + "needs_dane": true, + "weight": 6, + "stmt_txns": 6, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SPO*P&G'SPAMELA'SDINER3703 F" + ] + }, + { + "canonical": "Svdp Castle Shannon", + "confidence": 1.0, + "needs_dane": true, + "weight": 6, + "stmt_txns": 4, + "n_accounts": 2, + "account_ids": [ + 641, + 879 + ], + "account_names": [ + "SVDP Castle Shannon", + "Svdp Castle Shannon" + ], + "descriptor_samples": [ + "SVDP CASTLE SHANNON 3423 LIBRARY" + ] + }, + { + "canonical": "Target", + "confidence": 1.0, + "needs_dane": false, + "weight": 6, + "stmt_txns": 4, + "n_accounts": 2, + "account_ids": [ + 605, + 731 + ], + "account_names": [ + "Target", + "Target 00012534" + ], + "descriptor_samples": [ + "TARGET 00027870201 S HILLS VLG P", + "TARGET 00012534360 EAST WATERFRO" + ] + }, + { + "canonical": "The Saloon Of", + "confidence": 0.82, + "needs_dane": false, + "weight": 6, + "stmt_txns": 4, + "n_accounts": 2, + "account_ids": [ + 847, + 801 + ], + "account_names": [ + "TST* SALOON OF MT. LEBANOPITTSBURGH PA", + "The Saloon of Mt. Lebanon" + ], + "descriptor_samples": [ + "TST* SALOON OF MT. LEB622 WASHIN", + "TST* SALOON OF MT. LEBANOPI" + ] + }, + { + "canonical": "Best Buy", + "confidence": 1.0, + "needs_dane": false, + "weight": 5, + "stmt_txns": 3, + "n_accounts": 2, + "account_ids": [ + 751, + 740 + ], + "account_names": [ + "Best Buy 00005868", + "Best Buy 00008250" + ], + "descriptor_samples": [ + "BEST BUY 000058685000 ALICIA DRI", + "BEST BUY 000082501000 CRANBERRY" + ] + }, + { + "canonical": "Bp 9604786Ukani Broqps2900 Banks", + "confidence": 0.4, + "needs_dane": true, + "weight": 5, + "stmt_txns": 5, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "BP#9604786UKANI BROQPS2900 BANKS" + ] + }, + { + "canonical": "Capital One Transfer Ach Web", + "confidence": 0.4, + "needs_dane": true, + "weight": 5, + "stmt_txns": 3, + "n_accounts": 2, + "account_ids": [ + 536, + 535 + ], + "account_names": [ + "CAPITAL ONE TRANSFER ACH WEB PAYMENT RT04E16C0EA8E68", + "CAPITAL ONE TRANSFER ACH WEB PAYMENT RT097FE1F911EB7" + ], + "descriptor_samples": [ + "CAPITAL ONE TRANSFER ACH WEB RT0 CAPITAL ONE TRANSFER ACH WEB RT0D854FAADD124", + "CAPITAL ONE TRANSFER ACH WEB PAY CAPITAL ONE TRANSFER ACH WEB PAYMENT RT097FE1F911EB7", + "CAPITAL ONE TRANSFER ACH WEB PAY CAPITAL ONE TRANSFER ACH WEB PAYMENT RT04E16C0EA8E68" + ] + }, + { + "canonical": "Check", + "confidence": 1.0, + "needs_dane": false, + "weight": 5, + "stmt_txns": 4, + "n_accounts": 1, + "account_ids": [ + 524 + ], + "account_names": [ + "CHECK 141 xxxxx4572" + ], + "descriptor_samples": [ + "CHECK 143 xxxxx2209 CHECK 143 xxxxx2209", + "CHECK 142 xxxxx1771 CHECK 142 xxxxx1771", + "CHECK 144 xxxxx4324 CHECK 144 xxxxx4324", + "CHECK 141 xxxxx4572 CHECK 141 xxxxx4572" + ] + }, + { + "canonical": "Expedia", + "confidence": 1.0, + "needs_dane": false, + "weight": 5, + "stmt_txns": 3, + "n_accounts": 2, + "account_ids": [ + 717, + 711 + ], + "account_names": [ + "Expedia", + "Expedia 720693476227451111 Expedia Group Way W Seattle 98119 Wa Usa (return)" + ], + "descriptor_samples": [ + "EXPEDIA 720693476227451111 EXPED", + "EXPEDIA 734110357020371111 EXPED" + ] + }, + { + "canonical": "Michaels Stores", + "confidence": 1.0, + "needs_dane": false, + "weight": 5, + "stmt_txns": 3, + "n_accounts": 2, + "account_ids": [ + 587, + 664 + ], + "account_names": [ + "Michaels Stores", + "Michaels Stores 9186" + ], + "descriptor_samples": [ + "MICHAELS STORES 9186 700 SETTLER", + "MICHAELS STORES 9944 4000 OXFORD" + ] + }, + { + "canonical": "Peacock", + "confidence": 0.69, + "needs_dane": true, + "weight": 5, + "stmt_txns": 4, + "n_accounts": 1, + "account_ids": [ + 607 + ], + "account_names": [ + "Peacock" + ], + "descriptor_samples": [ + "PEACOCK 75AE1 PREMIUM 30 ROCKEFE", + "PEACOCK 81D06 PREMIUM 30 ROCKEFE", + "PEACOCK EF701 PREMIUM 30 ROCKEFE", + "PEACOCK X6258 PREMIUM 30 ROCKEFE" + ] + }, + { + "canonical": "Rita's", + "confidence": 1.0, + "needs_dane": false, + "weight": 5, + "stmt_txns": 4, + "n_accounts": 1, + "account_ids": [ + 882 + ], + "account_names": [ + "Rita's" + ], + "descriptor_samples": [ + "RITA'S # 412 3712 FIFTH AVE PITT", + "RITA'S #381 6145 STEUBENVILLE PI" + ] + }, + { + "canonical": "Spiegel Freedman Psych105 Braunl", + "confidence": 0.4, + "needs_dane": true, + "weight": 5, + "stmt_txns": 5, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SPIEGEL FREEDMAN PSYCH105 BRAUNL" + ] + }, + { + "canonical": "University Of Pittsburgh|Rnk Pittsburgh P3610 Forbe", + "confidence": 0.4, + "needs_dane": true, + "weight": 5, + "stmt_txns": 5, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST*RNK PITTSBURGH - P3610 FORBE" + ] + }, + { + "canonical": "Www Costco Com", + "confidence": 1.0, + "needs_dane": true, + "weight": 5, + "stmt_txns": 4, + "n_accounts": 1, + "account_ids": [ + 844 + ], + "account_names": [ + "WWW COSTCO COM 800-955-2292 WA" + ], + "descriptor_samples": [ + "WWW COSTCO COM 800-955-2292" + ] + }, + { + "canonical": "Als Corner", + "confidence": 1.0, + "needs_dane": false, + "weight": 4, + "stmt_txns": 3, + "n_accounts": 1, + "account_ids": [ + 762 + ], + "account_names": [ + "Als Corner" + ], + "descriptor_samples": [ + "ALS CORNER 7412 BIG BEAVER BLVD" + ] + }, + { + "canonical": "CVS Pharmacy", + "confidence": 1.0, + "needs_dane": false, + "weight": 4, + "stmt_txns": 2, + "n_accounts": 2, + "account_ids": [ + 783, + 816 + ], + "account_names": [ + "CVS Pharmacy", + "Cvs/pharmacy #02348" + ], + "descriptor_samples": [ + "CVS/PHARMACY #05094 328 COCHRAN", + "CVS/PHARMACY #02348 3422 FORBES" + ] + }, + { + "canonical": "Dave And Andy S Ho207", + "confidence": 0.4, + "needs_dane": true, + "weight": 4, + "stmt_txns": 4, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *DAVE AND ANDY S HO207 ATWOOD" + ] + }, + { + "canonical": "Dunkin", + "confidence": 1.0, + "needs_dane": false, + "weight": 4, + "stmt_txns": 2, + "n_accounts": 2, + "account_ids": [ + 655, + 846 + ], + "account_names": [ + "DUNKIN #362852 CARNEGIE PA", + "Dunkin #348700 Q35" + ], + "descriptor_samples": [ + "DUNKIN #348700 Q35 3907 FORBES A", + "DUNKIN #362852 CARNEGIE PA" + ] + }, + { + "canonical": "Enricos Tazza Do125 Lytton", + "confidence": 0.4, + "needs_dane": true, + "weight": 4, + "stmt_txns": 4, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *ENRICO'S TAZZA D'O125 LYTTON" + ] + }, + { + "canonical": "Five Guys", + "confidence": 1.0, + "needs_dane": false, + "weight": 4, + "stmt_txns": 3, + "n_accounts": 1, + "account_ids": [ + 723 + ], + "account_names": [ + "Five Guys Pa 0076 Qsr" + ], + "descriptor_samples": [ + "FIVE GUYS PA 0076 QSR 117 S BOUQ" + ] + }, + { + "canonical": "Hofbrauhaus Pittsburgh2705 S Wat", + "confidence": 0.4, + "needs_dane": true, + "weight": 4, + "stmt_txns": 4, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "HOFBRAUHAUS PITTSBURGH2705 S WAT" + ] + }, + { + "canonical": "Luis Benitez", + "confidence": 0.65, + "needs_dane": true, + "weight": 4, + "stmt_txns": 3, + "n_accounts": 1, + "account_ids": [ + 891 + ], + "account_names": [ + "Luis Benitez" + ], + "descriptor_samples": [ + "ZEL FROM Luis Benitez ZEL FROM Luis Benitez" + ] + }, + { + "canonical": "Pitt Tuition Pittpaymnt Ach Web", + "confidence": 0.4, + "needs_dane": true, + "weight": 4, + "stmt_txns": 2, + "n_accounts": 2, + "account_ids": [ + 531, + 523 + ], + "account_names": [ + "PITT TUITION PITTPAYMNT ACH WEB OPUxxxx0412", + "PITT TUITION PITTPAYMNT ACH WEB OPUxxxx9683" + ], + "descriptor_samples": [ + "PITT TUITION PITTPAYMNT ACH WEB PITT TUITION PITTPAYMNT ACH WEB OPUxxxx9683", + "PITT TUITION PITTPAYMNT ACH WEB PITT TUITION PITTPAYMNT ACH WEB OPUxxxx0412" + ] + }, + { + "canonical": "Redhawk Coffee", + "confidence": 1.0, + "needs_dane": false, + "weight": 4, + "stmt_txns": 3, + "n_accounts": 1, + "account_ids": [ + 721 + ], + "account_names": [ + "Redhawk Coffee" + ], + "descriptor_samples": [ + "SQ *REDHAWK COFFEE 120 MEYRAN AV" + ] + }, + { + "canonical": "Schwab Brokerage Moneylink Ach W", + "confidence": 0.4, + "needs_dane": true, + "weight": 4, + "stmt_txns": 4, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SCHWAB BROKERAGE MONEYLINK ACH C SCHWAB BROKERAGE MONEYLINK ACH CREDIT xxxxxxxxxxx1687", + "SCHWAB BROKERAGE MONEYLINK ACH C SCHWAB BROKERAGE MONEYLINK ACH CREDIT xxxxxxxxxxx1878", + "SCHWAB BROKERAGE MONEYLINK ACH D SCHWAB BROKERAGE MONEYLINK ACH DEBIT xxxxxxxxxxx1878", + "SCHWAB BROKERAGE MONEYLINK ACH W SCHWAB BROKERAGE MONEYLINK ACH WEB-RECUR xxxxxxxxxxx1687" + ] + }, + { + "canonical": "Sportsmans Warehouse", + "confidence": 1.0, + "needs_dane": false, + "weight": 4, + "stmt_txns": 3, + "n_accounts": 1, + "account_ids": [ + 568 + ], + "account_names": [ + "Sportsmans Warehouse 2" + ], + "descriptor_samples": [ + "SPORTSMANS WAREHOUSE 2120 QUINN" + ] + }, + { + "canonical": "Subaru Of South Hills", + "confidence": 1.0, + "needs_dane": true, + "weight": 4, + "stmt_txns": 3, + "n_accounts": 1, + "account_ids": [ + 555 + ], + "account_names": [ + "Subaru Of South Hills" + ], + "descriptor_samples": [ + "SUBARU OF SOUTH HILLS 3260 WASHI" + ] + }, + { + "canonical": "Taco Bell", + "confidence": 1.0, + "needs_dane": false, + "weight": 4, + "stmt_txns": 2, + "n_accounts": 2, + "account_ids": [ + 686, + 691 + ], + "account_names": [ + "Taco Bell", + "Taco Bell #715902" + ], + "descriptor_samples": [ + "TACO BELL 728513 6407 STEARNS AV", + "TACO BELL #715902 3220 STOCKTON" + ] + }, + { + "canonical": "TNT Pizza", + "confidence": 1.0, + "needs_dane": false, + "weight": 4, + "stmt_txns": 3, + "n_accounts": 1, + "account_ids": [ + 624 + ], + "account_names": [ + "TNT Pizza" + ], + "descriptor_samples": [ + "TNT PIZZA 1513 MAIN ST BURGETTST" + ] + }, + { + "canonical": "University Of Pittsburgh|Hemingway S Cafe", + "confidence": 0.4, + "needs_dane": true, + "weight": 4, + "stmt_txns": 4, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "HEMINGWAY S CAFE 3911 FORBES AVE" + ] + }, + { + "canonical": "24 7 Travel St 2710 Commerce Rd", + "confidence": 0.4, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 703 + ], + "account_names": [ + "24 7 Travel St" + ], + "descriptor_samples": [ + "24 7 TRAVEL ST 1415 S FOSSIL ST", + "24 7 TRAVEL ST 2710 COMMERCE RD" + ] + }, + { + "canonical": "Act Cntyalleghenyprk", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 776 + ], + "account_names": [ + "Act Cntyalleghenyprk" + ], + "descriptor_samples": [ + "ACT CNTYALLEGHENYPRK 542 FORBES" + ] + }, + { + "canonical": "Allegheny Arms", + "confidence": 0.61, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 657 + ], + "account_names": [ + "Allegheny Arms" + ], + "descriptor_samples": [ + "ALLEGHENY ARMS AND GUN4603 LIBRA" + ] + }, + { + "canonical": "ATM Deposit", + "confidence": 0.66, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 519 + ], + "account_names": [ + "ATM Deposit" + ], + "descriptor_samples": [ + "ATM DEPOSIT xxxx2199 DEPOSIT 560 ATM DEPOSIT xxxx2199 DEPOSIT 5601 WALNUT ST PITTSBURGH PA", + "ATM DEPOSIT xxxx5883 DEPOSIT 403 ATM DEPOSIT xxxx5883 DEPOSIT 4031 5TH AVE PITTSBURGH PA" + ] + }, + { + "canonical": "Borough Of Dormont", + "confidence": 1.0, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 674 + ], + "account_names": [ + "Borough Of Dormont" + ], + "descriptor_samples": [ + "BOROUGH OF DORMONT 1444 HILLSDAL" + ] + }, + { + "canonical": "Bruster's Ice Cream", + "confidence": 1.0, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 604 + ], + "account_names": [ + "Bruster's Ice Cream" + ], + "descriptor_samples": [ + "BRUSTER'S ICE CREAM 4940 LIBRARY" + ] + }, + { + "canonical": "Butterjoint", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 608 + ], + "account_names": [ + "Butterjoint" + ], + "descriptor_samples": [ + "TST*BUTTERJOINT 208 N CRAIG ST P" + ] + }, + { + "canonical": "Cash App", + "confidence": 0.53, + "needs_dane": true, + "weight": 3, + "stmt_txns": 1, + "n_accounts": 2, + "account_ids": [ + 529, + 857 + ], + "account_names": [ + "Cash App" + ], + "descriptor_samples": [ + "CASH APP*DANE SABO*CAS Oakland C CASH APP*DANE SABO*CAS Oakland CA VISA MONEY TRANSFER C xxxxxx7500 VIS 1003" + ] + }, + { + "canonical": "Costco Online Rx", + "confidence": 1.0, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 843 + ], + "account_names": [ + "COSTCO ONLINE RX 800-955-2292 WA" + ], + "descriptor_samples": [ + "COSTCO ONLINE RX 800-955-22" + ] + }, + { + "canonical": "Ctlp*csc Serviceworks", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 650 + ], + "account_names": [ + "Ctlp*csc Serviceworks" + ], + "descriptor_samples": [ + "CTLP*CSC SERVICEWORKS 35 PINELAW" + ] + }, + { + "canonical": "Dick's Sporting Goods", + "confidence": 1.0, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 606 + ], + "account_names": [ + "Dick's Sporting Goods" + ], + "descriptor_samples": [ + "DICKS SPORTING GOODS 301 SOUTH H" + ] + }, + { + "canonical": "Fiori's Pizzaria", + "confidence": 0.91, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 551 + ], + "account_names": [ + "Fiori's Pizzaria" + ], + "descriptor_samples": [ + "FIORI S PIZZA 103 CAPITAL AVE PI", + "FIORI S PIZZARIA 3801 WASHINGTON" + ] + }, + { + "canonical": "Fuku Tea", + "confidence": 0.76, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 787 + ], + "account_names": [ + "Fuku Tea" + ], + "descriptor_samples": [ + "TST*FUKU TEA - PITT - 3800 FORBE" + ] + }, + { + "canonical": "Get Go", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 718 + ], + "account_names": [ + "Get Go #3257" + ], + "descriptor_samples": [ + "GET GO #3257 6513B STEUBENVILLE" + ] + }, + { + "canonical": "Giant Eagle", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 592 + ], + "account_names": [ + "Giant Eagle" + ], + "descriptor_samples": [ + "GIANT EAGLE #1241 1025 WASHINGTO", + "GIANT-EAGLE #0035 GREENTREE &" + ] + }, + { + "canonical": "Gloss* Jayme @ Xcepti.", + "confidence": 1.0, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 646 + ], + "account_names": [ + "Gloss* Jayme @ Xcepti." + ], + "descriptor_samples": [ + "GLOSS* JAYME @ XCEPTI.1901 MARMA" + ] + }, + { + "canonical": "Hemingway's Cafe", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 560 + ], + "account_names": [ + "Hemingway's Cafe" + ], + "descriptor_samples": [ + "HEMINGWAYS CAFE 3911 FORBES AVE" + ] + }, + { + "canonical": "Hinge", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 623 + ], + "account_names": [ + "hinge.co" + ], + "descriptor_samples": [ + "HINGE.CO 8750 NORTH CENTRAL EXPR" + ] + }, + { + "canonical": "J.Crew Factory", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 617 + ], + "account_names": [ + "J.Crew Factory" + ], + "descriptor_samples": [ + "J CREW FACTORY # 4039 301 S HILL", + "J. CREW FACTORY #112 2200 TANGER" + ] + }, + { + "canonical": "Jegs Com", + "confidence": 1.0, + "needs_dane": true, + "weight": 3, + "stmt_txns": 3, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "JEGS.COM 101 JEGS BOULEVARD DELA" + ] + }, + { + "canonical": "Moonlit Burgers", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 671 + ], + "account_names": [ + "Moonlit Burgers" + ], + "descriptor_samples": [ + "TST*MOONLIT BURGERS 1426 POTOMAC" + ] + }, + { + "canonical": "Pamela's", + "confidence": 0.6, + "needs_dane": true, + "weight": 3, + "stmt_txns": 1, + "n_accounts": 2, + "account_ids": [ + 620, + 821 + ], + "account_names": [ + "Pamela's", + "Pamelas Diner" + ], + "descriptor_samples": [ + "TST*PAMELAS DINER - MT427 WASHIN" + ] + }, + { + "canonical": "ParkWhiz", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 670 + ], + "account_names": [ + "ParkWhiz" + ], + "descriptor_samples": [ + "PARKWHIZ, INC. 208 S JEFFERSON S" + ] + }, + { + "canonical": "Primanti Bros", + "confidence": 0.58, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 747 + ], + "account_names": [ + "Primanti Bros" + ], + "descriptor_samples": [ + "PRIMANTI BROS 3803 FORBES AVE. P", + "PRIMANTI BROS ROBINSON4501 STEUB" + ] + }, + { + "canonical": "Rei Com", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 687 + ], + "account_names": [ + "Rei.Com 800-426-4840" + ], + "descriptor_samples": [ + "REI.COM 800-426-4840 PO BOX 1938" + ] + }, + { + "canonical": "Spo Mineospizzahouse", + "confidence": 1.0, + "needs_dane": true, + "weight": 3, + "stmt_txns": 3, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SPO*MINEO'SPIZZAHOUSE-713 WASHIN", + "SPO*MINEO'SPIZZAHOUSE-2128 MURRA" + ] + }, + { + "canonical": "Sports Car Club Of Ame6620", + "confidence": 0.4, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 795 + ], + "account_names": [ + "Sports Car Club Of Ame" + ], + "descriptor_samples": [ + "SPORTS CAR CLUB OF AME6620 SOUTH" + ] + }, + { + "canonical": "T-Gateway Center", + "confidence": 0.9, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 772 + ], + "account_names": [ + "T-Gateway Center" + ], + "descriptor_samples": [ + "GATEWAYCENTER 400 LIBERTY AVE PI" + ] + }, + { + "canonical": "Trader Joe's", + "confidence": 0.96, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 719 + ], + "account_names": [ + "Trader Joe's" + ], + "descriptor_samples": [ + "TRADER JOE S #630 1630 WASHINGTO" + ] + }, + { + "canonical": "Uber *trip", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 679 + ], + "account_names": [ + "Uber *trip" + ], + "descriptor_samples": [ + "UBER *TRIP 706 MISSION ST 800592" + ] + }, + { + "canonical": "University Of Pittsburgh|Pam Pittsburgh Parking325 Daniel", + "confidence": 0.4, + "needs_dane": true, + "weight": 3, + "stmt_txns": 3, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "PAM PITTSBURGH PARKING325 DANIEL" + ] + }, + { + "canonical": "Whole Foods Market Shl", + "confidence": 1.0, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 835 + ], + "account_names": [ + "Whole Foods Market SHL 866-216-1072 DE" + ], + "descriptor_samples": [ + "Whole Foods Market SHL 866-" + ] + }, + { + "canonical": "Wholefoods Pit", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 838 + ], + "account_names": [ + "WHOLEFOODS PIT 10694 WFM.COM/HELP PA" + ], + "descriptor_samples": [ + "WHOLEFOODS PIT 10694 WFM.CO" + ] + }, + { + "canonical": "Willi S Ski And Snowb3738", + "confidence": 0.4, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 668 + ], + "account_names": [ + "Willi S Ski And Snowb" + ], + "descriptor_samples": [ + "WILLI S SKI AND SNOWB3738 LIBRAR" + ] + }, + { + "canonical": "Wine And Spirits", + "confidence": 1.0, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 864 + ], + "account_names": [ + "Wine And Spirits" + ], + "descriptor_samples": [ + "WINE AND SPIRITS 9211 5000 OXFOR" + ] + }, + { + "canonical": "4891 Villa Fresh Itali301 S Hill", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "4891 VILLA FRESH ITALI301 S HILL" + ] + }, + { + "canonical": "7-Eleven 36193 999 Greentree Rd", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 651 + ], + "account_names": [ + "7-eleven 36193" + ], + "descriptor_samples": [ + "7-ELEVEN 36193 999 GREENTREE RD" + ] + }, + { + "canonical": "7-Eleven 40172 3505 Library Rd C", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 819 + ], + "account_names": [ + "7-eleven 40172" + ], + "descriptor_samples": [ + "7-ELEVEN 40172 3505 LIBRARY RD C" + ] + }, + { + "canonical": "Advance Auto Parts", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 570 + ], + "account_names": [ + "Advance Auto Parts #82" + ], + "descriptor_samples": [ + "ADVANCE AUTO PARTS #821621 PARKW" + ] + }, + { + "canonical": "Ammojoy Llc", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 662 + ], + "account_names": [ + "Ammojoy Llc" + ], + "descriptor_samples": [ + "AMMOJOY LLC 200 CO RD 3690 WYNNE" + ] + }, + { + "canonical": "Amz*vedder Holsters", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 667 + ], + "account_names": [ + "Amz*vedder Holsters" + ], + "descriptor_samples": [ + "AMZ*VEDDER HOLSTERS 440 TERRY AV" + ] + }, + { + "canonical": "Apex Race Parts", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 594 + ], + "account_names": [ + "Apex Race Parts" + ], + "descriptor_samples": [ + "APEX RACE PARTS 5980 STONERIDGE" + ] + }, + { + "canonical": "Apple Card", + "confidence": 0.69, + "needs_dane": true, + "weight": 2, + "stmt_txns": 0, + "n_accounts": 2, + "account_ids": [ + 869, + 511 + ], + "account_names": [ + "Apple Card", + "Apple Card Cashback" + ], + "descriptor_samples": [] + }, + { + "canonical": "Arco", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 696 + ], + "account_names": [ + "Arco 919671" + ], + "descriptor_samples": [ + "ARCO 919671 2300 GLENDALE AVE MO" + ] + }, + { + "canonical": "Atm Withdrawal Pncpm1896 N0414", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "ATM WITHDRAWAL PNCPM1896 N0202 3 ATM WITHDRAWAL PNCPM1896 N0202 3910 PITT-BENEDUM HALL PITTSBURGH PA", + "ATM WITHDRAWAL PNCPM1896 N0414 3 ATM WITHDRAWAL PNCPM1896 N0414 3910 PITT-BENEDUM HALL PITTSBURGH PA" + ] + }, + { + "canonical": "Baby Gee", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 685 + ], + "account_names": [ + "Baby Gee" + ], + "descriptor_samples": [ + "TST* BABY GEE 1227 E 4TH ST LONG" + ] + }, + { + "canonical": "Belvedere's", + "confidence": 0.53, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 625 + ], + "account_names": [ + "Belvedere's" + ], + "descriptor_samples": [ + "SQ *BELVEDERES ULTRA-D4016 BUTLE" + ] + }, + { + "canonical": "Big Buck Sport Shop", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 564 + ], + "account_names": [ + "Big Buck Sport Shop" + ], + "descriptor_samples": [ + "BIG BUCK SPORT SHOP 108 VIP DRIV" + ] + }, + { + "canonical": "Blue Alpha", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 669 + ], + "account_names": [ + "Blue Alpha" + ], + "descriptor_samples": [ + "BLUE ALPHA 35 ANDREW ST NEWNAN 3" + ] + }, + { + "canonical": "Bp 2695000Shreemadhqps101", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 813 + ], + "account_names": [ + "Bp#2695000shreemadhqps" + ], + "descriptor_samples": [ + "BP#2695000SHREEMADHQPS101 ST JOH" + ] + }, + { + "canonical": "Br Factory", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 615 + ], + "account_names": [ + "Br Factory Us 7996" + ], + "descriptor_samples": [ + "BR FACTORY US 7996 2200 TANGER B" + ] + }, + { + "canonical": "Brillobox", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 823 + ], + "account_names": [ + "Brillobox" + ], + "descriptor_samples": [ + "TST* BRILLOBOX 4104 PENN AVE PIT" + ] + }, + { + "canonical": "Buffalo Wild Wngs", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 833 + ], + "account_names": [ + "Buffalo Wild Wngs 0021" + ], + "descriptor_samples": [ + "BUFFALO WILD WNGS 0021480 HOME D" + ] + }, + { + "canonical": "Carvana", + "confidence": 0.36, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 507 + ], + "account_names": [ + "Carvana" + ], + "descriptor_samples": [ + "CARVANA PAYOUT CVNA x6542 CORPOR CARVANA PAYOUT CVNA x6542 CORPORATE ACH ST-K1K4H6N3F6Q3" + ] + }, + { + "canonical": "Claude.Ai Subscription", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 0, + "n_accounts": 2, + "account_ids": [ + 601, + 881 + ], + "account_names": [ + "Claude.AI Subscription", + "Claude.Ai Subscription" + ], + "descriptor_samples": [] + }, + { + "canonical": "Condado Tacos", + "confidence": 0.68, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 789 + ], + "account_names": [ + "Condado Tacos" + ], + "descriptor_samples": [ + "TST* CONDADO TACOS - D971 LIBERT" + ] + }, + { + "canonical": "Convention Ctr Garage", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 788 + ], + "account_names": [ + "Convention Ctr Garage" + ], + "descriptor_samples": [ + "CONVENTION CTR GARAGE 425 SIXTH" + ] + }, + { + "canonical": "Costco Annual Membership Renewal", + "confidence": 0.92, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 839 + ], + "account_names": [ + "Costco Annual Membership Renewal 1-800-7" + ], + "descriptor_samples": [ + "Costco Annual Membership Re" + ] + }, + { + "canonical": "Crfs Only", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 753 + ], + "account_names": [ + "Crfs Only" + ], + "descriptor_samples": [ + "CRFS ONLY 201 S WINEVILLE AVE ST" + ] + }, + { + "canonical": "Ctlp 3D Vending", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 709 + ], + "account_names": [ + "Ctlp*3d Vending Oh" + ], + "descriptor_samples": [ + "CTLP*3D VENDING OH 10456 RIVERSI" + ] + }, + { + "canonical": "Ctlp Vend", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 760 + ], + "account_names": [ + "Ctlp*vend 1800-766-872" + ], + "descriptor_samples": [ + "CTLP*VEND 1800-766-8722590 ELM R" + ] + }, + { + "canonical": "Cycle Gear", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 829 + ], + "account_names": [ + "Cycle Gear #105" + ], + "descriptor_samples": [ + "CYCLE GEAR #105 4848 WILLIAM FLY" + ] + }, + { + "canonical": "Dakota Watch", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 619 + ], + "account_names": [ + "Dakota Watch 36" + ], + "descriptor_samples": [ + "DAKOTA WATCH 36 301 SOUTH HILLS" + ] + }, + { + "canonical": "DELTA", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 716 + ], + "account_names": [ + "DELTA" + ], + "descriptor_samples": [ + "DELTA 1030 DELTA BLVD ATLANTA 30" + ] + }, + { + "canonical": "Eat N Park", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 586 + ], + "account_names": [ + "Eat_n_park #0044" + ], + "descriptor_samples": [ + "EAT_N_PARK #0044 100 PARK MANOR" + ] + }, + { + "canonical": "Fitbod", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 730 + ], + "account_names": [ + "Fitbod" + ], + "descriptor_samples": [ + "FITBOD 1655 TARAVAL ST SAN FRANC" + ] + }, + { + "canonical": "Flying J", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 708 + ], + "account_names": [ + "Flying J 655" + ], + "descriptor_samples": [ + "FLYING J 655 5300 SOUTH STATE RT" + ] + }, + { + "canonical": "Food For Thought", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 815 + ], + "account_names": [ + "Food For Thought" + ], + "descriptor_samples": [ + "TST*FOOD FOR THOUGHT 194 N CRAIG" + ] + }, + { + "canonical": "Forbes Bakery", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 759 + ], + "account_names": [ + "Forbes Bakery" + ], + "descriptor_samples": [ + "FORBES BAKERY 3801 FORBES AV PIT" + ] + }, + { + "canonical": "Freetaxusacom", + "confidence": 0.79, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 590 + ], + "account_names": [ + "Freetaxusacom" + ], + "descriptor_samples": [ + "FREETAXUSACOM PO BOX 51048 PROVO" + ] + }, + { + "canonical": "Fuji Sushi", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 888 + ], + "account_names": [ + "Fuji Sushi" + ], + "descriptor_samples": [ + "FUJI SUSHI 6091 STEUBENVILLE PIK" + ] + }, + { + "canonical": "Gamma Sports", + "confidence": 0.89, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 597 + ], + "account_names": [ + "Gamma Sports" + ], + "descriptor_samples": [ + "SP GAMMA SPORTS 200 WATERFRONT D" + ] + }, + { + "canonical": "Gap Outlet", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 616 + ], + "account_names": [ + "Gap Outlet" + ], + "descriptor_samples": [ + "GAP OUTLET US 7997 2200 TANGER B" + ] + }, + { + "canonical": "Golf Galaxy", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 589 + ], + "account_names": [ + "Golf Galaxy" + ], + "descriptor_samples": [ + "GOLF GALAXY 6530 STEUBENVILLE PI" + ] + }, + { + "canonical": "Goodwill", + "confidence": 0.73, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 818 + ], + "account_names": [ + "Goodwill" + ], + "descriptor_samples": [ + "GOODWILL OF SW PA 330 3 URBANO W" + ] + }, + { + "canonical": "Grndcynassnvcp", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 690 + ], + "account_names": [ + "Grndcynassnvcp" + ], + "descriptor_samples": [ + "GRNDCYNASSNVCP 6 S ENTRANCE RD G" + ] + }, + { + "canonical": "Half Crown Hill Or600 N", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 779 + ], + "account_names": [ + "Half Crown Hill Or" + ], + "descriptor_samples": [ + "SQ *HALF CROWN HILL OR600 N BRAN" + ] + }, + { + "canonical": "Hitchhiker Brewing", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 610 + ], + "account_names": [ + "Hitchhiker Brewing Co" + ], + "descriptor_samples": [ + "HITCHHIKER BREWING CO 190 CASTLE" + ] + }, + { + "canonical": "Hoover Dam Park/tour", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 695 + ], + "account_names": [ + "Hoover Dam Park/tour" + ], + "descriptor_samples": [ + "HOOVER DAM PARK/TOUR 81 HOOVER A" + ] + }, + { + "canonical": "Hop Farm Brewing Company", + "confidence": 0.8, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 814 + ], + "account_names": [ + "Hop Farm Brewing Company" + ], + "descriptor_samples": [ + "TST* HOP FARM BREWING 5601 BUTLE" + ] + }, + { + "canonical": "In-N-Out Lv - Russell 3397 W. Ru", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 698 + ], + "account_names": [ + "In-n-out Lv - Russell" + ], + "descriptor_samples": [ + "IN-N-OUT LV - RUSSELL 3397 W. RU" + ] + }, + { + "canonical": "Inbox Health", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 577 + ], + "account_names": [ + "Inbox Health" + ], + "descriptor_samples": [ + "INBOX HEALTH 470 JAMES ST SUITE" + ] + }, + { + "canonical": "Iron Born Pizza -", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 665 + ], + "account_names": [ + "Iron Born Pizza -" + ], + "descriptor_samples": [ + "TST*IRON BORN PIZZA - 1806 SMALL" + ] + }, + { + "canonical": "Jimmy John's", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 581 + ], + "account_names": [ + "Jimmy John's" + ], + "descriptor_samples": [ + "JIMMY JOHNS - 215 3444 FORBES AV" + ] + }, + { + "canonical": "Kellys Way Valero", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 598 + ], + "account_names": [ + "Kellys Way Valero" + ], + "descriptor_samples": [ + "KELLYS WAY VALERO 410 KELLYS WAY" + ] + }, + { + "canonical": "Kuhn's Mcknight", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 644 + ], + "account_names": [ + "Kuhn's Mcknight" + ], + "descriptor_samples": [ + "KUHN'S MCKNIGHT 4801 MCKNIGHT RO" + ] + }, + { + "canonical": "La Gourmandine Oak", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 0, + "n_accounts": 2, + "account_ids": [ + 595, + 565 + ], + "account_names": [ + "La Gourmandine", + "La Gourmandine Oak" + ], + "descriptor_samples": [] + }, + { + "canonical": "Lgb Business Jrn Shop", + "confidence": 0.89, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 681 + ], + "account_names": [ + "Lgb Business Jrn Shop" + ], + "descriptor_samples": [ + "LGB BUSINESS JRN SHOP LONG BEACH" + ] + }, + { + "canonical": "Lorelei", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 649 + ], + "account_names": [ + "Lorelei" + ], + "descriptor_samples": [ + "TST*LORELEI 124 S HIGHLAND AVE P" + ] + }, + { + "canonical": "Loves", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 706 + ], + "account_names": [ + "Love's #0809 Inside" + ], + "descriptor_samples": [ + "LOVE'S #0809 INSIDE 500 N. D HIG" + ] + }, + { + "canonical": "Marathon Petro188011", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 811 + ], + "account_names": [ + "Marathon Petro188011" + ], + "descriptor_samples": [ + "MARATHON PETRO188011 150 RT 30 O" + ] + }, + { + "canonical": "Mher Karakouzian", + "confidence": 0.71, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 890 + ], + "account_names": [ + "Mher Karakouzian" + ], + "descriptor_samples": [ + "ZEL FROM MHER KARAKOUZIAN ZEL FROM MHER KARAKOUZIAN" + ] + }, + { + "canonical": "Momoyao Studio", + "confidence": 0.9, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 754 + ], + "account_names": [ + "Momoyao Studio" + ], + "descriptor_samples": [ + "SP MOMOYAO STUDIO 8088 CONCERTO" + ] + }, + { + "canonical": "Mr Jones Watches", + "confidence": 0.91, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 822 + ], + "account_names": [ + "Mr Jones Watches" + ], + "descriptor_samples": [ + "SP MR JONES WATCHES 19 W 34TH ST" + ] + }, + { + "canonical": "Mt Lebanon Golf Course1000 Pine", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "MT LEBANON GOLF COURSE1000 PINE" + ] + }, + { + "canonical": "Mt. Lebanon Boozy Barr315 Mount", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "MT. LEBANON BOOZY BARR315 MOUNT" + ] + }, + { + "canonical": "Northshore Garage", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 796 + ], + "account_names": [ + "Northshore Garage" + ], + "descriptor_samples": [ + "NORTHSHORE GARAGE 425 SIXTH AVE" + ] + }, + { + "canonical": "Omar S Halal Grill", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 579 + ], + "account_names": [ + "Omar S Halal Grill" + ], + "descriptor_samples": [ + "OMAR S HALAL GRILL 4208 FORBES A" + ] + }, + { + "canonical": "Orbis Caffe", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 830 + ], + "account_names": [ + "Orbis Caffe" + ], + "descriptor_samples": [ + "SQ *ORBIS CAFFE 675 WASHINGTON R" + ] + }, + { + "canonical": "Other Fin Inst Atm Surcharge", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "OTHER FIN INST ATM SURCHARGE REI OTHER FIN INST ATM SURCHARGE REIMB" + ] + }, + { + "canonical": "Outlook Inn", + "confidence": 0.85, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 600 + ], + "account_names": [ + "Outlook Inn" + ], + "descriptor_samples": [ + "THE OUTLOOK INN 2417 ROUTE 68 RI" + ] + }, + { + "canonical": "Page Dairy Mart", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 588 + ], + "account_names": [ + "Page Dairy Mart" + ], + "descriptor_samples": [ + "PAGE DAIRY MART 4112 E CARSON ST" + ] + }, + { + "canonical": "Painting With A Twist", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 656 + ], + "account_names": [ + "Painting With A Twist" + ], + "descriptor_samples": [ + "PAINTING WITH A TWIST 2603 EAST" + ] + }, + { + "canonical": "Panda Supermarket Llc", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 770 + ], + "account_names": [ + "Panda Supermarket Llc" + ], + "descriptor_samples": [ + "PANDA SUPERMARKET LLC 5816-5818" + ] + }, + { + "canonical": "Panera Bread", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 886 + ], + "account_names": [ + "Panera Bread" + ], + "descriptor_samples": [ + "PANERA BREAD #202352 P3550 TERRA" + ] + }, + { + "canonical": "Pepboys Store", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 785 + ], + "account_names": [ + "Pepboys Store 549" + ], + "descriptor_samples": [ + "PEPBOYS STORE 549 6581 STEUBENVI" + ] + }, + { + "canonical": "Pitt Book Center", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 825 + ], + "account_names": [ + "Pitt Book Center 001" + ], + "descriptor_samples": [ + "PITT BOOK CENTER 001 4000 FIFTH" + ] + }, + { + "canonical": "Pitt Race", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 793 + ], + "account_names": [ + "Pitt Race" + ], + "descriptor_samples": [ + "PITT RACE 201 PENNDALE RD WAMPUM" + ] + }, + { + "canonical": "Ponderosa Golf Course", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 805 + ], + "account_names": [ + "Ponderosa Golf Course" + ], + "descriptor_samples": [ + "PONDEROSA GOLF COURSE 2728 STATE" + ] + }, + { + "canonical": "Ptc Ez Pass Auto Re", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 713 + ], + "account_names": [ + "Ptc Ez Pass Auto Re." + ], + "descriptor_samples": [ + "PTC EZ PASS AUTO RE. 300 EAST PA" + ] + }, + { + "canonical": "Range", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 645 + ], + "account_names": [ + "Range Usa Robinson Twp" + ], + "descriptor_samples": [ + "RANGE USA ROBINSON TWP10870 KENW" + ] + }, + { + "canonical": "Rent Application", + "confidence": 0.88, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 875 + ], + "account_names": [ + "Rent Application" + ], + "descriptor_samples": [ + "ZG * RENTAPPLICATION 1301 2ND AV" + ] + }, + { + "canonical": "Revzilla Motorsports", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 768 + ], + "account_names": [ + "Revzilla Motorsports" + ], + "descriptor_samples": [ + "REVZILLA MOTORSPORTS 4020 SOUTH" + ] + }, + { + "canonical": "RNK Pittsburgh", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 884 + ], + "account_names": [ + "RNK Pittsburgh" + ], + "descriptor_samples": [ + "TST* RNK PITTSBURGH - 3610 FORBE" + ] + }, + { + "canonical": "Rollier Hardware", + "confidence": 0.97, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 728 + ], + "account_names": [ + "Rollier Hardware" + ], + "descriptor_samples": [ + "ROLLIER'S HARDWARE 600 WASHINGTO" + ] + }, + { + "canonical": "Ross Stores", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 584 + ], + "account_names": [ + "Ross Stores" + ], + "descriptor_samples": [ + "ROSS STORES #1418 500 SETTLERS R" + ] + }, + { + "canonical": "Row House Cinema", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 652 + ], + "account_names": [ + "Row House Cinema" + ], + "descriptor_samples": [ + "ROW HOUSE CINEMA 4115 BUTLER STR" + ] + }, + { + "canonical": "Ruggers Pub", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 782 + ], + "account_names": [ + "Ruggers Pub" + ], + "descriptor_samples": [ + "RUGGERS PUB 40 S 22ND ST PITTSBU" + ] + }, + { + "canonical": "Simones", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 790 + ], + "account_names": [ + "Simones" + ], + "descriptor_samples": [ + "SIMONES 665 WASHINGTON RD PITTSB" + ] + }, + { + "canonical": "Smiths Fuel", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SMITHS-FUEL #9001 873 E SOUTH TE" + ] + }, + { + "canonical": "Snow.Com/vail Resorts", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 672 + ], + "account_names": [ + "Snow.Com/vail Resorts" + ], + "descriptor_samples": [ + "SNOW.COM/VAIL RESORTS 600 W LION" + ] + }, + { + "canonical": "Sp Partify", + "confidence": 0.82, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 786 + ], + "account_names": [ + "Partify 7671" + ], + "descriptor_samples": [ + "SP PARTIFY 7671 18050 15 MILE RO" + ] + }, + { + "canonical": "Sq *La Gourmandine 300 Cochran R", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *LA GOURMANDINE 300 COCHRAN R" + ] + }, + { + "canonical": "Stbc Pittsburgh -", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 777 + ], + "account_names": [ + "Stbc Pittsburgh -" + ], + "descriptor_samples": [ + "TST* STBC PITTSBURGH -316 N SHOR" + ] + }, + { + "canonical": "Summit Racing Equipmen1200 South", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SUMMIT RACING EQUIPMEN1200 SOUTH" + ] + }, + { + "canonical": "Telnyx Llc", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 578 + ], + "account_names": [ + "Telnyx Llc" + ], + "descriptor_samples": [ + "TELNYX LLC 600 CONGRESS AVE 8882" + ] + }, + { + "canonical": "The Dog Penn", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 807 + ], + "account_names": [ + "The Dog Penn" + ], + "descriptor_samples": [ + "TST*THE DOG PENN 2614 PENN AVE P" + ] + }, + { + "canonical": "The Exchange", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 889 + ], + "account_names": [ + "The Exchange" + ], + "descriptor_samples": [ + "THE EXCHANGE 6535 ROBINSON CENTR" + ] + }, + { + "canonical": "The Milkshake Fact3612 Forbe", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST*THE MILKSHAKE FACT3612 FORBE" + ] + }, + { + "canonical": "The Porch", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 862 + ], + "account_names": [ + "The Porch" + ], + "descriptor_samples": [ + "THE PORCH 221 SCHENLEY DR PITTSB" + ] + }, + { + "canonical": "The Tire Rack", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 582 + ], + "account_names": [ + "The Tire Rack" + ], + "descriptor_samples": [ + "THE TIRE RACK 7101 VORDEN PKWY S" + ] + }, + { + "canonical": "Thrifty Ski Rental", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 663 + ], + "account_names": [ + "Thrifty Ski Rental" + ], + "descriptor_samples": [ + "THRIFTY SKI RENTAL 24702 TRICIA" + ] + }, + { + "canonical": "Tm *nascar Cup Series", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 640 + ], + "account_names": [ + "Tm *nascar Cup Series" + ], + "descriptor_samples": [ + "TM *NASCAR CUP SERIES 7060 HOLLY" + ] + }, + { + "canonical": "Trace Brewing Llc", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 626 + ], + "account_names": [ + "Trace Brewing Llc" + ], + "descriptor_samples": [ + "SQ *TRACE BREWING LLC 4312 MAIN" + ] + }, + { + "canonical": "Trophysmack", + "confidence": 0.88, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 621 + ], + "account_names": [ + "Trophysmack" + ], + "descriptor_samples": [ + "SP TROPHYSMACK 2372 MORSE AVE. #" + ] + }, + { + "canonical": "Twilio Inc", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 574 + ], + "account_names": [ + "Twilio Inc" + ], + "descriptor_samples": [ + "TWILIO INC 101 SPEAR STREET SAN" + ] + }, + { + "canonical": "undergroundshirts.com", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 758 + ], + "account_names": [ + "undergroundshirts.com" + ], + "descriptor_samples": [ + "UNDERGROUNDSHIRTS.COM 1476 SEAVE" + ] + }, + { + "canonical": "University Of Pittsburgh|Hemingways Cafe Pittsburgh", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 834 + ], + "account_names": [ + "HEMINGWAY'S CAFE PITTSBURGH PA" + ], + "descriptor_samples": [ + "HEMINGWAY'S CAFE PITTSBURGH" + ] + }, + { + "canonical": "University Of Pittsburgh|Pitt Univ Parking", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 628 + ], + "account_names": [ + "Pitt Univ Parking-028" + ], + "descriptor_samples": [ + "PITT UNIV PARKING-028 204 BRACKE" + ] + }, + { + "canonical": "University Of Pittsburgh|Univ Pittsburgh Payroll Ach Cred", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "UNIV PITTSBURGH PAYROLL ACH CRED UNIV PITTSBURGH PAYROLL ACH CREDIT xx0275" + ] + }, + { + "canonical": "Uptown Coffee", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 573 + ], + "account_names": [ + "Uptown Coffee" + ], + "descriptor_samples": [ + "UPTOWN COFFEE 723 WASHINGTON RD" + ] + }, + { + "canonical": "Uu Storefront-campus", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 575 + ], + "account_names": [ + "Uu Storefront-campus" + ], + "descriptor_samples": [ + "UU STOREFRONT-CAMPUS 201 S 1460" + ] + }, + { + "canonical": "Walmart", + "confidence": 0.93, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 632 + ], + "account_names": [ + "Walmart" + ], + "descriptor_samples": [ + "WAL-MART #2300 250 SUMMIT PARK D" + ] + }, + { + "canonical": "Whole Foods Market Wex", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 841 + ], + "account_names": [ + "Whole Foods Market WEX 866-216-1072 DE" + ], + "descriptor_samples": [ + "Whole Foods Market WEX 866-" + ] + }, + { + "canonical": "Withdrawal Xxxxx8118 Withdrawal Xxxxx8118", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 533 + ], + "account_names": [ + "WITHDRAWAL xxxxx8118" + ], + "descriptor_samples": [ + "WITHDRAWAL xxxxx8118 WITHDRAWAL xxxxx8118" + ] + }, + { + "canonical": "Wm Supercenter", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "WM SUPERCENTER #3848 2228 W 1700", + "WM SUPERCENTER #1770 20245 ROUTE" + ] + }, + { + "canonical": "wp*pittrace.com", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 799 + ], + "account_names": [ + "wp*pittrace.com" + ], + "descriptor_samples": [ + "WP*PITTRACE.COM 201 PENNDALE RD" + ] + }, + { + "canonical": "Zoho Zoho Workplace", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "ZOHO* ZOHO-WORKPLACE 4141 HACIEN" + ] + }, + { + "canonical": "4891 Villa Fresh Itali", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 675 + ], + "account_names": [ + "4891 Villa Fresh Itali" + ], + "descriptor_samples": [] + }, + { + "canonical": "7-Eleven Food Stores 525 Main St", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "7-ELEVEN FOOD STORES 525 MAIN ST" + ] + }, + { + "canonical": "Ac Hotel Clayton", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "AC HOTEL CLAYTON 227 SOUTH CENTR" + ] + }, + { + "canonical": "Air Force Museum F1100 Spaat", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *AIR FORCE MUSEUM F1100 SPAAT" + ] + }, + { + "canonical": "Air Force Museum Foundation", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 710 + ], + "account_names": [ + "Air Force Museum Foundation" + ], + "descriptor_samples": [] + }, + { + "canonical": "Airbnb Hmjpzq3Fcn", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "AIRBNB * HMJPZQ3FCN 888 BRANNAN" + ] + }, + { + "canonical": "Amk Acrisure Concessio", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 766 + ], + "account_names": [ + "Amk Acrisure Concessio" + ], + "descriptor_samples": [] + }, + { + "canonical": "Amk Acrisure Concessio500 Art Ro", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "AMK ACRISURE CONCESSIO500 ART RO" + ] + }, + { + "canonical": "Apple Services", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 571 + ], + "account_names": [ + "Apple Services" + ], + "descriptor_samples": [] + }, + { + "canonical": "Apple Store", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 676 + ], + "account_names": [ + "Apple Store" + ], + "descriptor_samples": [] + }, + { + "canonical": "Atm Withdrawal Macnvtcoa0N1231", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "ATM WITHDRAWAL MACNVTCOA0N1231 3 ATM WITHDRAWAL MACNVTCOA0N1231 3910 3708 LAS VEGAS BLV LAS VEGAS NV" + ] + }, + { + "canonical": "Atm Withdrawal Macpxx2261N1012", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "ATM WITHDRAWAL MACPxx2261N1012 3 ATM WITHDRAWAL MACPxx2261N1012 3910 242 S. HIGHLAND AV PITTSBURGH PA" + ] + }, + { + "canonical": "Atm Withdrawal Pncpj6207 N0318", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "ATM WITHDRAWAL PNCPJ6207 N0318 3 ATM WITHDRAWAL PNCPJ6207 N0318 3910 4031 5TH AVE PITTSBURGH PA" + ] + }, + { + "canonical": "Atm Withdrawal Pncpj6274 N0902", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "ATM WITHDRAWAL PNCPJ6274 N0902 3 ATM WITHDRAWAL PNCPJ6274 N0902 3910 5601 WALNUT ST PITTSBURGH PA" + ] + }, + { + "canonical": "Black Sheep Cafe", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *BLACK SHEEP CAFE 19 N UNIVER" + ] + }, + { + "canonical": "Bp 1797700Potomac Bqps", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 545 + ], + "account_names": [ + "Bp#1797700potomac Bqps" + ], + "descriptor_samples": [] + }, + { + "canonical": "Bp 1797700Potomac Bqps1530 Potom", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "BP#1797700POTOMAC BQPS1530 POTOM" + ] + }, + { + "canonical": "Bp 9604786Ukani Bros Inc Pi", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "BP#9604786UKANI BROS INC PI" + ] + }, + { + "canonical": "Burghers Brewing Millv", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 773 + ], + "account_names": [ + "Burghers Brewing Millv" + ], + "descriptor_samples": [] + }, + { + "canonical": "Burghers Brewing Millv400 Grant", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "BURGHERS BREWING MILLV400 GRANT" + ] + }, + { + "canonical": "Capital One (Closed)", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 534 + ], + "account_names": [ + "Capital One (Closed)" + ], + "descriptor_samples": [] + }, + { + "canonical": "Cappy's Cafe", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 808 + ], + "account_names": [ + "Cappy's Cafe" + ], + "descriptor_samples": [] + }, + { + "canonical": "Castle Shannon Shop'n Save", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 880 + ], + "account_names": [ + "Castle Shannon Shop'n Save" + ], + "descriptor_samples": [] + }, + { + "canonical": "Chestnut Hills - Squir", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 775 + ], + "account_names": [ + "Chestnut Hills - Squir" + ], + "descriptor_samples": [] + }, + { + "canonical": "Chestnut Hills Squir5889 Forbe", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CHESTNUT HILLS - SQUIR5889 FORBE" + ] + }, + { + "canonical": "Costco Cashback", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 510 + ], + "account_names": [ + "Costco Cashback" + ], + "descriptor_samples": [] + }, + { + "canonical": "Cranberry Fitness Cent1000 Westi", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CRANBERRY FITNESS CENT1000 WESTI" + ] + }, + { + "canonical": "Crystal Inn Slc", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CRYSTAL INN SLC 230 W 500 S SALT" + ] + }, + { + "canonical": "Ctlp Laurel Foodsystem4590 Campb", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CTLP*LAUREL FOODSYSTEM4590 CAMPB" + ] + }, + { + "canonical": "Ctlp*laurel Foodsystem", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 803 + ], + "account_names": [ + "Ctlp*laurel Foodsystem" + ], + "descriptor_samples": [] + }, + { + "canonical": "Culvers Kingman Airway", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 693 + ], + "account_names": [ + "Culvers Kingman Airway" + ], + "descriptor_samples": [] + }, + { + "canonical": "Culvers Kingman Airway1737 Airwa", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CULVERS KINGMAN AIRWAY1737 AIRWA" + ] + }, + { + "canonical": "Culvers South Jordan", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CULVERS SOUTH JORDAN 3372 W SOUT" + ] + }, + { + "canonical": "Darn Tough Vermont", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 866 + ], + "account_names": [ + "Darn Tough Vermont" + ], + "descriptor_samples": [] + }, + { + "canonical": "Dave & Andy's", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 769 + ], + "account_names": [ + "Dave & Andy's" + ], + "descriptor_samples": [] + }, + { + "canonical": "David Pabst", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 873 + ], + "account_names": [ + "David Pabst" + ], + "descriptor_samples": [] + }, + { + "canonical": "Debit Card Purchase Xxxxxxxxxxxxxxxx3910 Ysi", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 537 + ], + "account_names": [ + "DEBIT CARD PURCHASE xxxxxxxxxxxxxxxx3910 YSI*Compeer Investment 412-xxx5741 PA" + ], + "descriptor_samples": [] + }, + { + "canonical": "Dey's Donuts & Hot", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 683 + ], + "account_names": [ + "Dey's Donuts & Hot" + ], + "descriptor_samples": [] + }, + { + "canonical": "Deys Donuts &Amp Hot1190 N", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *DEY'S DONUTS & HOT1190 N" + ] + }, + { + "canonical": "Dollys Bookstore", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *DOLLY'S BOOKSTORE 510 MAIN S" + ] + }, + { + "canonical": "eBay", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 622 + ], + "account_names": [ + "eBay" + ], + "descriptor_samples": [] + }, + { + "canonical": "Einstein Bros Beneqps3700 Ohara", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "EINSTEIN BROS. BENEQPS3700 OHARA" + ] + }, + { + "canonical": "Enrico's Tazza D'o", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 648 + ], + "account_names": [ + "Enrico's Tazza D'o" + ], + "descriptor_samples": [] + }, + { + "canonical": "Exxon Rr Thompson 7Ele", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 699 + ], + "account_names": [ + "Exxon Rr Thompson 7ele" + ], + "descriptor_samples": [] + }, + { + "canonical": "Exxon Rr Thompson 7Ele460 South", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "EXXON RR THOMPSON 7ELE460 SOUTH" + ] + }, + { + "canonical": "Facebook Marketplace", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 895 + ], + "account_names": [ + "Facebook Marketplace" + ], + "descriptor_samples": [] + }, + { + "canonical": "Forbes Street Qps", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 583 + ], + "account_names": [ + "Forbes Street Qps" + ], + "descriptor_samples": [] + }, + { + "canonical": "Forbes Street Qps3955 Forbes", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "FORBES STREET QPS3955 FORBES AVE" + ] + }, + { + "canonical": "Foxs Pizza Den Brookli", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 636 + ], + "account_names": [ + "Foxs Pizza Den Brookli" + ], + "descriptor_samples": [] + }, + { + "canonical": "Foxs Pizza Den Brookli902 Brookl", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "FOXS PIZZA DEN BROOKLI902 BROOKL" + ] + }, + { + "canonical": "Gloss Jayme Xceptio1901 Marma", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "GLOSS* JAYME @ XCEPTIO1901 MARMA" + ] + }, + { + "canonical": "Going Going Gone", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "GOING GOING GONE 1155 WASHINGTON" + ] + }, + { + "canonical": "Google", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 554 + ], + "account_names": [ + "Google" + ], + "descriptor_samples": [] + }, + { + "canonical": "Grey Parrot Consig", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 756 + ], + "account_names": [ + "Grey Parrot Consig" + ], + "descriptor_samples": [] + }, + { + "canonical": "Grey Parrot Consig322 Castle", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *GREY PARROT CONSIG322 CASTLE" + ] + }, + { + "canonical": "Harbor Freight Tools34100 Cranbe", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "HARBOR FREIGHT TOOLS34100 CRANBE" + ] + }, + { + "canonical": "Hofbrauhaus Pittsburgh", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 647 + ], + "account_names": [ + "Hofbrauhaus Pittsburgh" + ], + "descriptor_samples": [] + }, + { + "canonical": "Hoover Dam Souvenir An", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 692 + ], + "account_names": [ + "Hoover Dam Souvenir An" + ], + "descriptor_samples": [] + }, + { + "canonical": "Hoover Dam Souvenir An81 Hoover", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "HOOVER DAM SOUVENIR AN81 HOOVER" + ] + }, + { + "canonical": "Hudson St2380", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "HUDSON ST2380 1000 AIRPORT BLVD" + ] + }, + { + "canonical": "IKEA", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 826 + ], + "account_names": [ + "IKEA" + ], + "descriptor_samples": [] + }, + { + "canonical": "Interest Income", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 506 + ], + "account_names": [ + "Interest Income" + ], + "descriptor_samples": [] + }, + { + "canonical": "Investment Appreciation", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 859 + ], + "account_names": [ + "Investment Appreciation" + ], + "descriptor_samples": [] + }, + { + "canonical": "IRS Refund", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 509 + ], + "account_names": [ + "IRS Refund" + ], + "descriptor_samples": [] + }, + { + "canonical": "Irs Treas", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "IRS TREAS 310 TAX REF ACH CREDIT IRS TREAS 310 TAX REF ACH CREDIT xxxxxxxxxxx0908" + ] + }, + { + "canonical": "Japanpartsc Tokyoto Minatoku Kit", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "JAPANPARTSC TOKYOTO MINATOKU KIT" + ] + }, + { + "canonical": "Jegs", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 887 + ], + "account_names": [ + "Jegs" + ], + "descriptor_samples": [] + }, + { + "canonical": "Kingside Diner Ex", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 705 + ], + "account_names": [ + "Kingside Diner Ex" + ], + "descriptor_samples": [] + }, + { + "canonical": "Kingside Diner Ex6170 Delma", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST* KINGSIDE DINER EX6170 DELMA" + ] + }, + { + "canonical": "Kuhn's Market", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 563 + ], + "account_names": [ + "Kuhn's Market" + ], + "descriptor_samples": [] + }, + { + "canonical": "LongHorn Steakhouse", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 631 + ], + "account_names": [ + "LongHorn Steakhouse" + ], + "descriptor_samples": [] + }, + { + "canonical": "Longhorn Stk Ec", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "LONGHORN STK EC 012524410 WEST W" + ] + }, + { + "canonical": "Lsp Nomad Taqueria Bee18485 W", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "LSP*NOMAD TAQUERIA BEE18485 W CO" + ] + }, + { + "canonical": "Lsp*nomad Taqueria Bee", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 701 + ], + "account_names": [ + "Lsp*nomad Taqueria Bee" + ], + "descriptor_samples": [] + }, + { + "canonical": "Margaux - East Lib", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 659 + ], + "account_names": [ + "Margaux - East Lib" + ], + "descriptor_samples": [] + }, + { + "canonical": "Margaux East Lib5947 Penn", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST*MARGAUX - EAST LIB5947 PENN" + ] + }, + { + "canonical": "Marios East Side5442 Walnu", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST* MARIO'S EAST SIDE5442 WALNU" + ] + }, + { + "canonical": "Marriott", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 707 + ], + "account_names": [ + "Marriott" + ], + "descriptor_samples": [] + }, + { + "canonical": "Mineo's Pizza House", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 639 + ], + "account_names": [ + "Mineo's Pizza House" + ], + "descriptor_samples": [] + }, + { + "canonical": "Mt Lebanon - Parkmobil710 Washin", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "MT LEBANON - PARKMOBIL710 WASHIN" + ] + }, + { + "canonical": "Mt Lebanon Flowbird", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 877 + ], + "account_names": [ + "Mt Lebanon Flowbird" + ], + "descriptor_samples": [] + }, + { + "canonical": "Mt Lebanon Golf Course", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 602 + ], + "account_names": [ + "Mt Lebanon Golf Course" + ], + "descriptor_samples": [] + }, + { + "canonical": "Mt Lebanon Parkmobil", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 876 + ], + "account_names": [ + "Mt Lebanon Parkmobil" + ], + "descriptor_samples": [] + }, + { + "canonical": "Mt. Lebanon - Flowbird710 Washin", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "MT. LEBANON - FLOWBIRD710 WASHIN" + ] + }, + { + "canonical": "Mt. Lebanon Boozy Barr", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 761 + ], + "account_names": [ + "Mt. Lebanon Boozy Barr" + ], + "descriptor_samples": [] + }, + { + "canonical": "Never Summer Industries", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 694 + ], + "account_names": [ + "Never Summer Industries" + ], + "descriptor_samples": [] + }, + { + "canonical": "Nike", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 618 + ], + "account_names": [ + "Nike" + ], + "descriptor_samples": [] + }, + { + "canonical": "Nikepos", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "NIKEPOS_US 2200 TANGER BLVD., SU" + ] + }, + { + "canonical": "NLR Dividend", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 849 + ], + "account_names": [ + "NLR Dividend" + ], + "descriptor_samples": [] + }, + { + "canonical": "Opening Balance Adjustment", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 855 + ], + "account_names": [ + "Opening Balance Adjustment" + ], + "descriptor_samples": [] + }, + { + "canonical": "Orderengine", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "PAYPAL *ORDERENGINE 7700 EASTPOR" + ] + }, + { + "canonical": "Orderville Entp Sincla", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 700 + ], + "account_names": [ + "Orderville Entp Sincla" + ], + "descriptor_samples": [] + }, + { + "canonical": "Orderville Entp Sincla15 E State", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "ORDERVILLE ENTP SINCLA15 E STATE" + ] + }, + { + "canonical": "Owlfeathers Waterc5860 Darli", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *OWLFEATHERS WATERC5860 DARLI" + ] + }, + { + "canonical": "Pa Courts Fines And Co601 Common", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "PA COURTS FINES AND CO601 COMMON" + ] + }, + { + "canonical": "Pam Pittsburgh Parking", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 757 + ], + "account_names": [ + "Pam Pittsburgh Parking" + ], + "descriptor_samples": [] + }, + { + "canonical": "Papa Js Twin Plaza", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 666 + ], + "account_names": [ + "Papa Js Twin Plaza" + ], + "descriptor_samples": [] + }, + { + "canonical": "Papa Js Twin Plaza2016 Small", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST*PAPA JS TWIN PLAZA2016 SMALL" + ] + }, + { + "canonical": "Park City Desserts401 Main S", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST*PARK CITY DESSERTS401 MAIN S" + ] + }, + { + "canonical": "Pitt Campus Rec Office3719 Terra", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "PITT-CAMPUS REC OFFICE3719 TERRA" + ] + }, + { + "canonical": "Pitt Parking", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 870 + ], + "account_names": [ + "Pitt Parking" + ], + "descriptor_samples": [] + }, + { + "canonical": "Pitt Parking Pay Stati", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 556 + ], + "account_names": [ + "Pitt Parking Pay Stati" + ], + "descriptor_samples": [] + }, + { + "canonical": "Pitt Salary", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 505 + ], + "account_names": [ + "Pitt Salary" + ], + "descriptor_samples": [] + }, + { + "canonical": "Pitt-campus Rec Office", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 784 + ], + "account_names": [ + "Pitt-campus Rec Office" + ], + "descriptor_samples": [] + }, + { + "canonical": "PNC Bank", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 525 + ], + "account_names": [ + "PNC Bank" + ], + "descriptor_samples": [] + }, + { + "canonical": "PNC Interest", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 892 + ], + "account_names": [ + "PNC Interest" + ], + "descriptor_samples": [] + }, + { + "canonical": "Primanti Brothers", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 629 + ], + "account_names": [ + "Primanti Brothers" + ], + "descriptor_samples": [] + }, + { + "canonical": "Red Robin No", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "RED ROBIN NO 460 1678 ROUTE 228" + ] + }, + { + "canonical": "Rnk Pittsburgh - P", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 613 + ], + "account_names": [ + "Rnk Pittsburgh - P" + ], + "descriptor_samples": [] + }, + { + "canonical": "Rock Garden Eatery", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 697 + ], + "account_names": [ + "Rock Garden Eatery" + ], + "descriptor_samples": [] + }, + { + "canonical": "Rock Garden Eatery670 East H", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST*ROCK GARDEN EATERY670 EAST H" + ] + }, + { + "canonical": "Schwab Dividends", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 538 + ], + "account_names": [ + "Schwab Dividends" + ], + "descriptor_samples": [] + }, + { + "canonical": "Senor Birria Los Alami", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 689 + ], + "account_names": [ + "Senor Birria Los Alami" + ], + "descriptor_samples": [] + }, + { + "canonical": "Senor Birria Los Alami11151 Los", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SENOR BIRRIA LOS ALAMI11151 LOS" + ] + }, + { + "canonical": "Settebello Llc S260 S", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST*SETTEBELLO LLC - S260 S 200" + ] + }, + { + "canonical": "Shake Shack Conc A Slc474", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SHAKE SHACK CONC A SLC474 N 3700" + ] + }, + { + "canonical": "Shop 'n Save", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 572 + ], + "account_names": [ + "Shop 'n Save" + ], + "descriptor_samples": [] + }, + { + "canonical": "Shorty's North Sh", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 802 + ], + "account_names": [ + "Shorty's North Sh" + ], + "descriptor_samples": [] + }, + { + "canonical": "Shortys North Sh353 N Shor", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST* SHORTY'S NORTH SH353 N SHOR" + ] + }, + { + "canonical": "Slc Freddyssteakburger", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 680 + ], + "account_names": [ + "Slc Freddyssteakburger" + ], + "descriptor_samples": [] + }, + { + "canonical": "Slc Freddyssteakburgerslc Airpor", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SLC FREDDYSSTEAKBURGERSLC AIRPOR" + ] + }, + { + "canonical": "Sp Darn Tough", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SP DARN TOUGH 364 WHETSTONE DRIV" + ] + }, + { + "canonical": "Sp Ict Billet", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SP ICT BILLET 1107 S. WEST STREE" + ] + }, + { + "canonical": "Sp Never Summer Ind", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SP NEVER SUMMER IND 3838 EUDORA" + ] + }, + { + "canonical": "Spiegel Freedman Psych470 James", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SPIEGEL FREEDMAN PSYCH470 JAMES" + ] + }, + { + "canonical": "Spiegel Freedman Psycological Associates", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 653 + ], + "account_names": [ + "Spiegel Freedman Psycological Associates" + ], + "descriptor_samples": [] + }, + { + "canonical": "Spo Cappyscafe", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SPO*CAPPY'SCAFE 5431 WALNUT ST P" + ] + }, + { + "canonical": "Spo Mamacitasmexicanbi300 Adams", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SPO*MAMACITASMEXICANBI300 ADAMS" + ] + }, + { + "canonical": "SPY Dividend", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 850 + ], + "account_names": [ + "SPY Dividend" + ], + "descriptor_samples": [] + }, + { + "canonical": "Steam Games", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 725 + ], + "account_names": [ + "Steam Games" + ], + "descriptor_samples": [] + }, + { + "canonical": "Steam Purchase", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "WL *STEAM PURCHASE 10400 NE 4TH" + ] + }, + { + "canonical": "Summit Racing Equipment", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 550 + ], + "account_names": [ + "Summit Racing Equipment" + ], + "descriptor_samples": [] + }, + { + "canonical": "SWVXX Interest", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 851 + ], + "account_names": [ + "SWVXX Interest" + ], + "descriptor_samples": [] + }, + { + "canonical": "The Milkshake Fact", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 562 + ], + "account_names": [ + "The Milkshake Fact" + ], + "descriptor_samples": [] + }, + { + "canonical": "The Milkshake Fact9898 Unive", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST*THE MILKSHAKE FACT9898 UNIVE" + ] + }, + { + "canonical": "Tina's Cocktail B", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 824 + ], + "account_names": [ + "Tina's Cocktail B" + ], + "descriptor_samples": [] + }, + { + "canonical": "Tinas Cocktail B4114 Main", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST* TINA'S COCKTAIL B4114 MAIN" + ] + }, + { + "canonical": "Tow Tegrity Incorp1735 Shena", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *TOW-TEGRITY INCORP1735 SHENA" + ] + }, + { + "canonical": "Tow-tegrity Incorp", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 791 + ], + "account_names": [ + "Tow-tegrity Incorp" + ], + "descriptor_samples": [] + }, + { + "canonical": "Ukani Brothers", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 627 + ], + "account_names": [ + "Ukani Brothers" + ], + "descriptor_samples": [] + }, + { + "canonical": "University of Pittsburgh", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 872 + ], + "account_names": [ + "University of Pittsburgh" + ], + "descriptor_samples": [] + }, + { + "canonical": "University Of Pittsburgh|Bp 9604786Ukani Bros Inc Pittsburgh", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 845 + ], + "account_names": [ + "BP#9604786UKANI BROS INC PITTSBURGH PA" + ], + "descriptor_samples": [] + }, + { + "canonical": "University Of Pittsburgh|Diamond Parking", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "DIAMOND PARKING 605 1ST AVENUE S" + ] + }, + { + "canonical": "University Of Pittsburgh|Ikea Pittsburgh", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "IKEA PITTSBURGH 2001 PARK MANOR" + ] + }, + { + "canonical": "University Of Pittsburgh|Park City Parking Serv445 Marsac", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "PARK CITY PARKING SERV445 MARSAC" + ] + }, + { + "canonical": "University Of Pittsburgh|Parking", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "PARKING IN PITTSBURGH 232 BLVD O" + ] + }, + { + "canonical": "University Of Pittsburgh|Pittsburgh", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 750 + ], + "account_names": [ + "Pittsburgh 250" + ], + "descriptor_samples": [] + }, + { + "canonical": "University Of Pittsburgh|Uu Visitor Parking Q40311 Fort", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "UU VISITOR PARKING Q40311 FORT D" + ] + }, + { + "canonical": "Upmc Student Insurance", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 612 + ], + "account_names": [ + "Upmc Student Insurance" + ], + "descriptor_samples": [] + }, + { + "canonical": "Ups 1Z9F17520395000884", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 654 + ], + "account_names": [ + "Ups*1z9f17520395000884" + ], + "descriptor_samples": [] + }, + { + "canonical": "Ups 1Z9F1752039500088455 Glenlak", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "UPS*1Z9F1752039500088455 GLENLAK" + ] + }, + { + "canonical": "Utah Main Campus Store270 S", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "UTAH MAIN CAMPUS STORE270 S 1500" + ] + }, + { + "canonical": "Venmo Cashout Ach Credit Xxxxxxx", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "VENMO CASHOUT ACH CREDIT xxxxxxx VENMO CASHOUT ACH CREDIT xxxxxxxxx4742" + ] + }, + { + "canonical": "VEU Dividend", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 848 + ], + "account_names": [ + "VEU Dividend" + ], + "descriptor_samples": [] + }, + { + "canonical": "Who Knows", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 860 + ], + "account_names": [ + "Who Knows" + ], + "descriptor_samples": [] + }, + { + "canonical": "Wine & Spirits", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 883 + ], + "account_names": [ + "Wine & Spirits" + ], + "descriptor_samples": [] + }, + { + "canonical": "Yardi Penny Test Acctverify Ach", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "YARDI PENNY TEST ACCTVERIFY ACH YARDI PENNY TEST ACCTVERIFY ACH CREDIT P4D22K" + ] + }, + { + "canonical": "Yardi Systems", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 858 + ], + "account_names": [ + "Yardi Systems" + ], + "descriptor_samples": [] + }, + { + "canonical": "Zagg", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 745 + ], + "account_names": [ + "Zagg" + ], + "descriptor_samples": [] + }, + { + "canonical": "Zagg Ecom", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "ZAGG - ECOM 910 W LEGACY CENTER" + ] + }, + { + "canonical": "Zel From Matthew Barry Zel", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "ZEL FROM MATTHEW BARRY ZEL FROM MATTHEW BARRY" + ] + }, + { + "canonical": "Zelle Income", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 508 + ], + "account_names": [ + "Zelle Income" + ], + "descriptor_samples": [] + }, + { + "canonical": "Zoho", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 609 + ], + "account_names": [ + "Zoho" + ], + "descriptor_samples": [] + } + ] +} \ No newline at end of file diff --git a/migration/rebuild_clusters.md b/migration/rebuild_clusters.md new file mode 100644 index 0000000..d3b766c --- /dev/null +++ b/migration/rebuild_clusters.md @@ -0,0 +1,192 @@ +# Merchant cluster proposal + +- 386 clusters from 372 accounts + 1017 statement txns +- **142** auto-proposable (>=0.80, clean canonical) +- **244** NEED DANE (ambiguous / junky canonical / new merchant) + +## NEEDS DANE (top 40 by volume) +_For each: what is the real merchant? You can type a name; it becomes a permanent rule._ + +- **?** (conf 0.57, weight 75, 28 accts, 47 stmt) guess=`Amazon` + - desc: `AMAZON MARK* B00SF6VV0410 TERRY` + - desc: `AMAZON.COM*9R3UC0N93 440 TERRY A` + - desc: `AMAZON.COM*N428X9Q71 440 TERRY A` + - desc: `AMAZON MARK* B008Z3VV0410 TERRY` + - desc: `AMAZON MARK* B03Y156K1410 TERRY` + - desc: `AMAZON MARK* B204T9M31410 TERRY` + - accts: Amazon, Amazon Mark* B008z3vv0, Amazon Mark* B00sf6vv0, Amazon Mark* B00sf6vv0410 Terry Avenue North Seattle 98109 Wa Usa (return), Amazon Mark* B03y156k1, Amazon Mark* B204t9m31 +- **?** (conf 0.4, weight 56, 0 accts, 56 stmt) guess=`University Of Pittsburgh|Pitt Parking Pay Stati127 North` + - desc: `PITT PARKING PAY STATI127 NORTH` +- **?** (conf 0.78, weight 37, 7 accts, 30 stmt) guess=`McDonald's` + - desc: `MCDONALDS 1862 3708 FORBES AVE P` + - desc: `MCDONALDS 1102 225 MOUNT LEBANON` + - desc: `MCDONALD'S F1862 3708 FORBES AVE` + - desc: `MCDONALD'S F1102 225 MT LEBANON` + - desc: `MCDONALDS 5834 2518 W LIBERTY RD` + - desc: `MCDONALD'S F27387 1412 B MAIN ST` + - accts: McDonald's, Mcdonald's F1102, Mcdonald's F1862, Mcdonald's F27387, Mcdonalds 1862, Mcdonalds 33234 +- **?** (conf 1.0, weight 30, 0 accts, 30 stmt) guess=`Castle Shannon Shop` + - desc: `CASTLE SHANNON SHOP' 799 CASTLE` +- **?** (conf 0.71, weight 30, 2 accts, 28 stmt) guess=`Market District` + - desc: `MARKET DISTRICT #0014 7000 OXFOR` + - desc: `MARKET DISTRICT #0047 100 SETTLE` + - accts: Market District, Market District Supermarket +- **?** (conf 0.4, weight 18, 0 accts, 18 stmt) guess=`Apple Com Bill One Apple` + - desc: `APPLE.COM/BILL ONE APPLE PARK WA` + - desc: `APPLE.COM/US ONE APPLE PARK WAY` + - desc: `APPLE.COM/BILL ONE APPLE PARK CU` +- **?** (conf 0.47, weight 18, 8 accts, 10 stmt) guess=`Compeer` + - desc: `COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB C5R6` + - desc: `COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB MD64` + - desc: `COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB 3Y6Q` + - desc: `COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB R34S` + - desc: `COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB D9FZ` + - desc: `COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS ACH WEB F394` + - accts: COMPEER-COMP-CP WEB PMTS ACH WEB 3Y6QDL, COMPEER-COMP-CP WEB PMTS ACH WEB 7Y648K, COMPEER-COMP-CP WEB PMTS ACH WEB D9FZ0L, COMPEER-COMP-CP WEB PMTS ACH WEB F394TK, COMPEER-COMP-CP WEB PMTS ACH WEB JS0NNK, COMPEER-COMP-CP WEB PMTS ACH WEB K7TDFK +- **?** (conf 0.4, weight 18, 0 accts, 18 stmt) guess=`Sq *La Gourmandine Oak116 Meyran` + - desc: `SQ *LA GOURMANDINE OAK116 MEYRAN` +- **?** (conf 1.0, weight 17, 0 accts, 17 stmt) guess=`Kuhns Banksville` + - desc: `KUHNS BANKSVILLE 3125 BANKSVILLE` +- **?** (conf 0.75, weight 13, 4 accts, 9 stmt) guess=`Starbucks` + - desc: `STARBUCKS STORE 27117 4022 FIFTH` + - desc: `STARBUCKS 27117 4022 5TH AVE PIT` + - desc: `STARBUCKS 8007827282 2401 UTAH A` + - accts: Starbucks, Starbucks 27117, Starbucks 8007827282, Starbucks Store 27117 +- **?** (conf 0.4, weight 11, 0 accts, 11 stmt) guess=`Claude Ai Subscription548 Market` + - desc: `CLAUDE.AI SUBSCRIPTION548 MARKET` +- **?** (conf 0.61, weight 11, 2 accts, 9 stmt) guess=`Duquesne Light` + - desc: `DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH DEBIT xxxx` + - accts: DUQUESNE LIGHT PAYMENT ACH DEBIT xxxxxx5333, Duquesne Light +- **?** (conf 0.4, weight 11, 1 accts, 10 stmt) guess=`T2` + - desc: `T2* MT LEBANON PA 8900 KEYSTONE` + - accts: T2* Mt Lebanon Pa +- **?** (conf 1.0, weight 10, 1 accts, 9 stmt) guess=`Comcast / Xfinity` + - desc: `COMCAST / XFINITY 15 SUMMIT PARK` + - accts: Comcast / Xfinity +- **?** (conf 1.0, weight 10, 0 accts, 10 stmt) guess=`Interest Payment Interest Payment` + - desc: `INTEREST PAYMENT INTEREST PAYMENT` +- **?** (conf 0.4, weight 10, 0 accts, 10 stmt) guess=`Upmc Student Insurance600 Grant` + - desc: `UPMC STUDENT INSURANCE600 GRANT` +- **?** (conf 0.4, weight 9, 0 accts, 9 stmt) guess=`Applecard Gsbank Payment Ach Web` + - desc: `APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT ACH WEB-RECU` + - desc: `APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT ACH WEB xxxx` +- **?** (conf 0.4, weight 9, 0 accts, 9 stmt) guess=`Citi Autopay Payment Ach Web` + - desc: `CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xx` + - desc: `CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xx` + - desc: `CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xx` + - desc: `CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xx` + - desc: `CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xx` + - desc: `CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WEB-RECUR xx` +- **?** (conf 1.0, weight 9, 0 accts, 9 stmt) guess=`Daily Cash Adjustment` + - desc: `DAILY CASH ADJUSTMENT` +- **?** (conf 1.0, weight 7, 0 accts, 7 stmt) guess=`Ebay O` + - desc: `EBAY O*07-14287-66191 2535 NORTH` + - desc: `EBAY O*07-14287-66190 2535 NORTH` + - desc: `EBAY O*07-14287-66189 2535 NORTH` + - desc: `EBAY O*07-14287-66188 2535 NORTH` + - desc: `EBAY O*07-14287-66187 2535 NORTH` + - desc: `EBAY O*07-14287-66186 2535 NORTH` +- **?** (conf 0.9, weight 7, 1 accts, 6 stmt) guess=`Needle & Bean` + - desc: `SQ *NEEDLE & BEAN 320 CASTLE` + - accts: Needle & Bean +- **?** (conf 0.4, weight 7, 0 accts, 7 stmt) guess=`University Of Pittsburgh|Univ Pittsburgh Salary Ach Credi` + - desc: `UNIV PITTSBURGH SALARY ACH CREDI UNIV PITTSBURGH SALARY ACH CREDIT xx0` +- **?** (conf 1.0, weight 7, 0 accts, 7 stmt) guess=`Youtube Tv` + - desc: `GOOGLE *YOUTUBE TV 1600 AMPHITHE` +- **?** (conf 0.62, weight 6, 2 accts, 4 stmt) guess=`Liberty Mutual` + - desc: `LIBERTY MUTUAL 175 BERKELEY ST 8` + - desc: `LIBERTY MUTUAL ATTN: COURTNEY MU` + - accts: Liberty Mutual +- **?** (conf 0.53, weight 6, 2 accts, 4 stmt) guess=`Openai` + - desc: `OPENAI *CHATGPT SUBSCR548 MARKET` + - desc: `OPENAI 1455 3RD STREET SAN FRANC` + - accts: Openai, Openai *chatgpt Subscr +- **?** (conf 0.4, weight 6, 0 accts, 6 stmt) guess=`Spo P&Amp Gspamelasdiner3703 F` + - desc: `SPO*P&G'SPAMELA'SDINER3703 F` +- **?** (conf 1.0, weight 6, 2 accts, 4 stmt) guess=`Svdp Castle Shannon` + - desc: `SVDP CASTLE SHANNON 3423 LIBRARY` + - accts: SVDP Castle Shannon, Svdp Castle Shannon +- **?** (conf 0.4, weight 5, 0 accts, 5 stmt) guess=`Bp 9604786Ukani Broqps2900 Banks` + - desc: `BP#9604786UKANI BROQPS2900 BANKS` +- **?** (conf 0.4, weight 5, 2 accts, 3 stmt) guess=`Capital One Transfer Ach Web` + - desc: `CAPITAL ONE TRANSFER ACH WEB RT0 CAPITAL ONE TRANSFER ACH WEB RT0D854F` + - desc: `CAPITAL ONE TRANSFER ACH WEB PAY CAPITAL ONE TRANSFER ACH WEB PAYMENT ` + - desc: `CAPITAL ONE TRANSFER ACH WEB PAY CAPITAL ONE TRANSFER ACH WEB PAYMENT ` + - accts: CAPITAL ONE TRANSFER ACH WEB PAYMENT RT04E16C0EA8E68, CAPITAL ONE TRANSFER ACH WEB PAYMENT RT097FE1F911EB7 +- **?** (conf 0.69, weight 5, 1 accts, 4 stmt) guess=`Peacock` + - desc: `PEACOCK 75AE1 PREMIUM 30 ROCKEFE` + - desc: `PEACOCK 81D06 PREMIUM 30 ROCKEFE` + - desc: `PEACOCK EF701 PREMIUM 30 ROCKEFE` + - desc: `PEACOCK X6258 PREMIUM 30 ROCKEFE` + - accts: Peacock +- **?** (conf 0.4, weight 5, 0 accts, 5 stmt) guess=`Spiegel Freedman Psych105 Braunl` + - desc: `SPIEGEL FREEDMAN PSYCH105 BRAUNL` +- **?** (conf 0.4, weight 5, 0 accts, 5 stmt) guess=`University Of Pittsburgh|Rnk Pittsburgh P3610 Forbe` + - desc: `TST*RNK PITTSBURGH - P3610 FORBE` +- **?** (conf 1.0, weight 5, 1 accts, 4 stmt) guess=`Www Costco Com` + - desc: `WWW COSTCO COM 800-955-2292` + - accts: WWW COSTCO COM 800-955-2292 WA +- **?** (conf 0.4, weight 4, 0 accts, 4 stmt) guess=`Dave And Andy S Ho207` + - desc: `SQ *DAVE AND ANDY S HO207 ATWOOD` +- **?** (conf 0.4, weight 4, 0 accts, 4 stmt) guess=`Enricos Tazza Do125 Lytton` + - desc: `SQ *ENRICO'S TAZZA D'O125 LYTTON` +- **?** (conf 0.4, weight 4, 0 accts, 4 stmt) guess=`Hofbrauhaus Pittsburgh2705 S Wat` + - desc: `HOFBRAUHAUS PITTSBURGH2705 S WAT` +- **?** (conf 0.65, weight 4, 1 accts, 3 stmt) guess=`Luis Benitez` + - desc: `ZEL FROM Luis Benitez ZEL FROM Luis Benitez` + - accts: Luis Benitez +- **?** (conf 0.4, weight 4, 2 accts, 2 stmt) guess=`Pitt Tuition Pittpaymnt Ach Web` + - desc: `PITT TUITION PITTPAYMNT ACH WEB PITT TUITION PITTPAYMNT ACH WEB OPUxxx` + - desc: `PITT TUITION PITTPAYMNT ACH WEB PITT TUITION PITTPAYMNT ACH WEB OPUxxx` + - accts: PITT TUITION PITTPAYMNT ACH WEB OPUxxxx0412, PITT TUITION PITTPAYMNT ACH WEB OPUxxxx9683 +- **?** (conf 0.4, weight 4, 0 accts, 4 stmt) guess=`Schwab Brokerage Moneylink Ach W` + - desc: `SCHWAB BROKERAGE MONEYLINK ACH C SCHWAB BROKERAGE MONEYLINK ACH CREDIT` + - desc: `SCHWAB BROKERAGE MONEYLINK ACH C SCHWAB BROKERAGE MONEYLINK ACH CREDIT` + - desc: `SCHWAB BROKERAGE MONEYLINK ACH D SCHWAB BROKERAGE MONEYLINK ACH DEBIT ` + - desc: `SCHWAB BROKERAGE MONEYLINK ACH W SCHWAB BROKERAGE MONEYLINK ACH WEB-RE` +- **?** (conf 1.0, weight 4, 1 accts, 3 stmt) guess=`Subaru Of South Hills` + - desc: `SUBARU OF SOUTH HILLS 3260 WASHI` + - accts: Subaru Of South Hills + +## AUTO-PROPOSABLE (top 40 by volume) + +- `GomobilePGH` (conf 1.0, weight 49, merges 4 accts) ids=[865, 642, 559, 781] +- `Sheetz` (conf 1.0, weight 43, merges 7 accts) ids=[566, 744, 739, 567, 774, 794, 738] +- `Autozone` (conf 1.0, weight 27, merges 6 accts) ids=[593, 812, 724, 714, 591, 806] +- `Sunoco` (conf 1.0, weight 27, merges 6 accts) ids=[599, 638, 827, 767, 820, 715] +- `Costco Whse` (conf 1.0, weight 22, merges 2 accts) ids=[842, 836] +- `Harbor Freight Tools` (conf 0.95, weight 18, merges 3 accts) ids=[878, 569, 737] +- `Petco` (conf 1.0, weight 15, merges 4 accts) ids=[546, 729, 797, 633] +- `Chick-fil-A` (conf 1.0, weight 14, merges 5 accts) ids=[630, 810, 832, 712, 702] +- `Costco Gas` (conf 1.0, weight 14, merges 2 accts) ids=[840, 837] +- `D J*wsj` (conf 1.0, weight 10, merges 1 accts) ids=[553] +- `Rockauto` (conf 0.94, weight 10, merges 1 accts) ids=[557] +- `University Club` (conf 0.86, weight 10, merges 2 accts) ids=[867, 637] +- `Chikn Oakland` (conf 1.0, weight 9, merges 1 accts) ids=[558] +- `Raising Cane's` (conf 1.0, weight 9, merges 3 accts) ids=[868, 561, 828] +- `Barnes & Noble` (conf 0.9, weight 7, merges 3 accts) ids=[603, 817, 658] +- `Lowe's` (conf 1.0, weight 7, merges 1 accts) ids=[673] +- `PMUSA` (conf 1.0, weight 7, merges 2 accts) ids=[885, 614] +- `Home Depot` (conf 0.83, weight 6, merges 1 accts) ids=[722] +- `REI` (conf 1.0, weight 6, merges 2 accts) ids=[684, 682] +- `Target` (conf 1.0, weight 6, merges 2 accts) ids=[605, 731] +- `The Saloon Of` (conf 0.82, weight 6, merges 2 accts) ids=[847, 801] +- `Best Buy` (conf 1.0, weight 5, merges 2 accts) ids=[751, 740] +- `Check` (conf 1.0, weight 5, merges 1 accts) ids=[524] +- `Expedia` (conf 1.0, weight 5, merges 2 accts) ids=[717, 711] +- `Michaels Stores` (conf 1.0, weight 5, merges 2 accts) ids=[587, 664] +- `Rita's` (conf 1.0, weight 5, merges 1 accts) ids=[882] +- `Als Corner` (conf 1.0, weight 4, merges 1 accts) ids=[762] +- `CVS Pharmacy` (conf 1.0, weight 4, merges 2 accts) ids=[783, 816] +- `Dunkin` (conf 1.0, weight 4, merges 2 accts) ids=[655, 846] +- `Five Guys` (conf 1.0, weight 4, merges 1 accts) ids=[723] +- `Redhawk Coffee` (conf 1.0, weight 4, merges 1 accts) ids=[721] +- `Sportsmans Warehouse` (conf 1.0, weight 4, merges 1 accts) ids=[568] +- `Taco Bell` (conf 1.0, weight 4, merges 2 accts) ids=[686, 691] +- `TNT Pizza` (conf 1.0, weight 4, merges 1 accts) ids=[624] +- `Act Cntyalleghenyprk` (conf 1.0, weight 3, merges 1 accts) ids=[776] +- `Butterjoint` (conf 1.0, weight 3, merges 1 accts) ids=[608] +- `Ctlp*csc Serviceworks` (conf 1.0, weight 3, merges 1 accts) ids=[650] +- `Fiori's Pizzaria` (conf 0.91, weight 3, merges 1 accts) ids=[551] +- `Get Go` (conf 1.0, weight 3, merges 1 accts) ids=[718] +- `Giant Eagle` (conf 1.0, weight 3, merges 1 accts) ids=[592] diff --git a/migration/rebuild_review.html b/migration/rebuild_review.html new file mode 100644 index 0000000..25e35fc --- /dev/null +++ b/migration/rebuild_review.html @@ -0,0 +1,378 @@ + + + + + +Firefly import review + + + +
+

Firefly import review

+
+
+ + +
+ +
+

Needs Clarity UNMATCHED + REVIEW — set the + canonical account, category, budget, then approve

+ + + +
DateAmountDescriptionAccountCategoryBudgetCommentDecision
+ +
+ +
+

Auto-Proposed matched a rule — approved by + default, deny or edit if wrong

+ + + +
DateAmountDescriptionAccountCategoryBudgetCommentDecision
+ +
+ +
+

All Transactions complete picture, read-only + (includes skipped duplicates)

+ + + +
DateAmountTypeDescriptionBucketTarget
+
+ +
+ Decisions are exported as decisions.json (keyed by + external_id). Re-run + firefly_import.py <normalized> --decisions decisions.json --post + to post only approved rows. +
+ + + + diff --git a/migration/review_preview_mixed.html b/migration/review_preview_mixed.html new file mode 100644 index 0000000..14ab9e5 --- /dev/null +++ b/migration/review_preview_mixed.html @@ -0,0 +1,378 @@ + + + + + +Firefly import review + + + +
+

Firefly import review

+
+
+ + +
+ +
+

Needs Clarity UNMATCHED + REVIEW — set the + canonical account, category, budget, then approve

+ + + +
DateAmountDescriptionAccountCategoryBudgetCommentDecision
+ +
+ +
+

Auto-Proposed matched a rule — approved by + default, deny or edit if wrong

+ + + +
DateAmountDescriptionAccountCategoryBudgetCommentDecision
+ +
+ +
+

All Transactions complete picture, read-only + (includes skipped duplicates)

+ + + +
DateAmountTypeDescriptionBucketTarget
+
+ +
+ Decisions are exported as decisions.json (keyed by + external_id). Re-run + firefly_import.py <normalized> --decisions decisions.json --post + to post only approved rows. +
+ + + +