diff --git a/merchant_map.json b/merchant_map.json index e180e8a..984a994 100644 --- a/merchant_map.json +++ b/merchant_map.json @@ -1,11 +1,54 @@ { + "_comment": "Staging merchant map. First match wins; specific before generic. account_id filled at resolve. category=safe existing default only; review:true => account is firm but Dane sets category+budget (Needs/Wants/Savings) per transaction.", + "_special_nonmerchant": { + "ach_7552_payment": "'ACH DEPOSIT INTERNET TRANSFER FROM ACCOUNT ENDING IN 7552' on Apple Card => TRANSFER PNC Checking -> Apple Credit Card.", + "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": "SHEETZ", - "account_name": "Sheetz", - "category": "Fuel", - "type": "withdrawal", - "account_id": 566 - } + {"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"} ] } diff --git a/migration/merchant_clusters.json b/migration/merchant_clusters.json new file mode 100644 index 0000000..dbc9dae --- /dev/null +++ b/migration/merchant_clusters.json @@ -0,0 +1,5837 @@ +{ + "summary": { + "total_clusters": 363, + "auto_proposable": 150, + "needs_dane": 213, + "statement_txns_folded": 706 + }, + "clusters": [ + { + "canonical": "Amazon", + "confidence": 0.55, + "needs_dane": true, + "weight": 68, + "stmt_txns": 40, + "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.COM*N428X9Q71 440 TERRY AVE N SEATTLE 98109 WA USA", + "AMAZON MARK* B008Z3VV0410 TERRY AVENUE NORTH SEATTLE 98109 WA USA", + "AMAZON MARK* B00SF6VV0410 TERRY AVENUE NORTH SEATTLE 98109 WA USA (RETURN)", + "AMAZON MARK* B00SF6VV0410 TERRY AVENUE NORTH SEATTLE 98109 WA USA", + "AMAZON MARK* B03Y156K1410 TERRY AVENUE NORTH SEATTLE 98109 WA USA", + "AMAZON MARK* B204T9M31410 TERRY AVENUE NORTH SEATTLE 98109 WA USA" + ] + }, + { + "canonical": "GomobilePGH", + "confidence": 1.0, + "needs_dane": false, + "weight": 47, + "stmt_txns": 43, + "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 THE ALL PITTSBURGH 15222 PA USA", + "GOMOBILEPGH 2 232 BOULEVARD OF THE ALL PITTSBURGH15222 PA USA", + "GOMOBILEPGH 1 232 BOULEVARD OF THE ALL PITTSBURGH 15222 PA USA", + "GOMOBILEPGH 1 232 BOULEVARD OF THE ALL PITTSBURGH15222 PA USA", + "GOMOBILEPGH 3 232 BOULEVARD OF THE ALL PITTSBURGH 15222 PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Pitt Parking Pay Stati127 North", + "confidence": 0.4, + "needs_dane": true, + "weight": 42, + "stmt_txns": 42, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "PITT PARKING PAY STATI127 NORTH BELLEFIELD AVE PITTSBURGH 15260 PA USA", + "PITT PARKING PAY STATI127 NORTH BELLEFIELD AVE PITTSBURGH15260 PA USA" + ] + }, + { + "canonical": "McDonald's", + "confidence": 0.78, + "needs_dane": true, + "weight": 31, + "stmt_txns": 24, + "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": [ + "MCDONALD'S F1862 3708 FORBES AVE PITTSBURGH 15213 PA USA", + "MCDONALDS 1862 3708 FORBES AVE PITTSBURGH 15213 PA USA", + "MCDONALDS 1102 225 MOUNT LEBANON BLVD CASTLE SHANNO15234 PA USA", + "MCDONALDS 5834 2518 W LIBERTY RD PITTSBURGH 15226 PA USA", + "MCDONALD'S F1102 225 MT LEBANON BLVD PITTSBURGH 15234 PA USA", + "MCDONALD'S F27387 1412 B MAIN STREET BURGETTSTOWN 15021 PA USA" + ] + }, + { + "canonical": "Sheetz", + "confidence": 1.0, + "needs_dane": false, + "weight": 31, + "stmt_txns": 24, + "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 RD PITTSBURGH15205 PA USA", + "SHEETZ 0353 5410 CAMPBELLS RUN RD PITTSBURGH 15205 PA USA", + "SHEETZ 2353 5410 CAMPBELLS RUN RD PITTSBURGH 15205 PA USA", + "SHEETZ 2353 5410 CAMPBELLS RUN RD PITTSBURGH15205 PA USA", + "SHEETZ 0719 1312 SOUTH MAIN STREET GREENSBURG 15601 PA USA", + "SHEETZ 2678 973 WILLIAM FLYNN HIGHWA GLENSHAW 15116 PA USA" + ] + }, + { + "canonical": "Castle Shannon Shop", + "confidence": 1.0, + "needs_dane": true, + "weight": 26, + "stmt_txns": 26, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CASTLE SHANNON SHOP' 799 CASTLE SHANNON BLV PITTSBURGH 15234 PA USA", + "CASTLE SHANNON SHOP' 799 CASTLE SHANNON BLV PITTSBURGH15234 PA USA" + ] + }, + { + "canonical": "Market District", + "confidence": 0.71, + "needs_dane": true, + "weight": 22, + "stmt_txns": 20, + "n_accounts": 2, + "account_ids": [ + 863, + 547 + ], + "account_names": [ + "Market District", + "Market District Supermarket" + ], + "descriptor_samples": [ + "MARKET DISTRICT #0014 7000 OXFORD DR BETHEL PARK 15102 PA USA", + "MARKET DISTRICT #0014 7000 OXFORD DR BETHEL PAR15102 PA USA", + "MARKET DISTRICT #0047 100 SETTLERS RIDGE CENTER DR PITTSBURGH 15205 PA USA" + ] + }, + { + "canonical": "Sunoco", + "confidence": 1.0, + "needs_dane": false, + "weight": 19, + "stmt_txns": 13, + "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 BANKSVILLE RD PITTSBURGH 15216 PA USA", + "SUNOCO 8001687502 QPS339 COCHRAN RD MOUNT LEBA15228 PA USA", + "SUNOCO 0062400700 QPS300 GRANT AVE MILLVALE 15209 PA USA", + "SUNOCO 8001687502 QPS339 COCHRAN RD MOUNT LEBANON15228 PA USA", + "SUNOCO 8000157402 QPS195 N CRAIG ST PITTSBURGH 15213 PA USA", + "SUNOCO 0859331103 QPS301 CRAFT AVE PITTSBURGH 15213 PA USA" + ] + }, + { + "canonical": "Autozone", + "confidence": 1.0, + "needs_dane": false, + "weight": 17, + "stmt_txns": 11, + "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 #4690 322 WASHINGTON RD PITTSBURGH 15216 PA USA", + "AUTOZONE #5505 6581 STEUBENVILLE PIKE CRAFTON 15205 PA USA", + "AUTOZONE #4690 322 WASHINGTON RD PITTSBURGH 15216 PA USA (RETURN)", + "AUTOZONE 9353 936 S MILLVALE AVE PITTSBURGH 15213 PA USA" + ] + }, + { + "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 ROAD PITTSBURGH 15216 PA USA", + "KUHNS BANKSVILLE 3125 BANKSVILLE ROAD PITTSBURGH15216 PA USA" + ] + }, + { + "canonical": "Apple Com Bill One Apple", + "confidence": 0.4, + "needs_dane": true, + "weight": 15, + "stmt_txns": 15, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "APPLE.COM/BILL ONE APPLE PARK WAY CUPERTINO 95014 CA USA", + "APPLE.COM/US ONE APPLE PARK WAY CUPERTINO 95014 CA USA", + "APPLE.COM/BILL ONE APPLE PARK CUPERTINO 95014 CA USA" + ] + }, + { + "canonical": "Harbor Freight Tools", + "confidence": 0.95, + "needs_dane": false, + "weight": 14, + "stmt_txns": 11, + "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 CAMPBELLS RUN RD PITTSBURGH15205 PA USA", + "HARBOR FREIGHT TOOLS 25185 CAMPBELLS RUN RD PITTSBURGH 15205 PA USA" + ] + }, + { + "canonical": "Chick-fil-A", + "confidence": 1.0, + "needs_dane": false, + "weight": 12, + "stmt_txns": 7, + "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 WASHINGTON ROAD PITTSBURGH 15241 PA USA", + "CHICK-FIL-A #01583 1700 ROUTE 228 CRANBERRY 16066 PA USA", + "CHICK-FIL-A #01477 480 WATERFRONT DRIVE E HOMESTEAD 15120 PA USA", + "CHICK-FIL-A #01297 100 ROBINSON CENTER DR PITTSBURGH 15205 PA USA", + "CHICK-FIL-A #03763 1625 SW WANAMAKER TOPEKA 66604 KS USA" + ] + }, + { + "canonical": "Petco", + "confidence": 1.0, + "needs_dane": false, + "weight": 12, + "stmt_txns": 8, + "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 BETHEL PARK 15241 PA USA", + "PETCO 1811 590 EAST WATERFRONT DR HOMESTEAD 15120 PA USA", + "PETCO 1819 59 FORT COUCH RD BETHEL PAR15241 PA USA" + ] + }, + { + "canonical": "Starbucks", + "confidence": 0.75, + "needs_dane": true, + "weight": 11, + "stmt_txns": 7, + "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 AVE PITTSBURGH 15213 PA USA", + "STARBUCKS 27117 4022 5TH AVE PITTSBURGH 15213 PA USA", + "STARBUCKS STORE 27117 4022 FIFTH AVE PITTSBURGH15213 PA USA" + ] + }, + { + "canonical": "Claude Ai Subscription548 Market Street", + "confidence": 0.4, + "needs_dane": true, + "weight": 10, + "stmt_txns": 10, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CLAUDE.AI SUBSCRIPTION548 MARKET STREET PMB 90375 SAN FRANCISCO94104 CA USA", + "CLAUDE.AI SUBSCRIPTION548 MARKET STREET PMB 90375 SAN FRANCI94104 CA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh 15213 Pa Usa", + "confidence": 0.4, + "needs_dane": true, + "weight": 10, + "stmt_txns": 10, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *LA GOURMANDINE OAK116 MEYRAN AVE PITTSBURGH 15213 PA USA" + ] + }, + { + "canonical": "Comcast / Xfinity", + "confidence": 1.0, + "needs_dane": true, + "weight": 8, + "stmt_txns": 7, + "n_accounts": 1, + "account_ids": [ + 585 + ], + "account_names": [ + "Comcast / Xfinity" + ], + "descriptor_samples": [ + "COMCAST / XFINITY 15 SUMMIT PARK DR PITTSBURGH 15275 PA USA", + "COMCAST / XFINITY 15 SUMMIT PARK DR PITTSBURGH15275 PA USA", + "COMCAST / XFINITY 15 SUMMIT PARK DR 800-266-2278 15275 PA USA" + ] + }, + { + "canonical": "Compeer", + "confidence": 0.45, + "needs_dane": true, + "weight": 8, + "stmt_txns": 0, + "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": [] + }, + { + "canonical": "D J*wsj", + "confidence": 1.0, + "needs_dane": false, + "weight": 8, + "stmt_txns": 7, + "n_accounts": 1, + "account_ids": [ + 553 + ], + "account_names": [ + "D J*wsj" + ], + "descriptor_samples": [ + "D J*WSJ 4300 RTE 1 N SOUTH BRUNSWI08852 NJ USA", + "D J*WSJ 4300 RTE 1 N MONMOUTH J08852 NJ USA", + "D J*WSJ 4300 RTE 1 N MONMOUTH JCT 08852 NJ USA" + ] + }, + { + "canonical": "Raising Cane's", + "confidence": 1.0, + "needs_dane": false, + "weight": 8, + "stmt_txns": 5, + "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 AVENUE PITTSBURGH 15213 PA USA", + "RAISING CANES 0934 3610 FIFTH AVENUE PITTSBURGH15213 PA USA" + ] + }, + { + "canonical": "T2", + "confidence": 0.4, + "needs_dane": true, + "weight": 8, + "stmt_txns": 7, + "n_accounts": 1, + "account_ids": [ + 549 + ], + "account_names": [ + "T2* Mt Lebanon Pa" + ], + "descriptor_samples": [ + "T2* MT LEBANON PA 8900 KEYSTONE XING, SUITE 700 INDIANAPOLIS 46240 IN USA", + "T2* MT LEBANON PA 8900 KEYSTONE XING, SUITE 700 INDIANAPOL46240 IN USA" + ] + }, + { + "canonical": "Upmc Student Insurance600 Grant", + "confidence": 0.4, + "needs_dane": true, + "weight": 8, + "stmt_txns": 8, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "UPMC STUDENT INSURANCE600 GRANT ST 41ST FL PITTSBURGH 15219 PA USA", + "UPMC STUDENT INSURANCE600 GRANT ST 41ST FL PITTSBURGH15219 PA USA", + "UPMC STUDENT INSURANCE600 GRANT ST 41ST FL 888-499-6885 15219 PA USA" + ] + }, + { + "canonical": "Ach Deposit Internet Transfer From", + "confidence": 0.4, + "needs_dane": true, + "weight": 7, + "stmt_txns": 7, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "ACH DEPOSIT INTERNET TRANSFER FROM ACCOUNT ENDING IN 7552" + ] + }, + { + "canonical": "Chikn Oakland", + "confidence": 1.0, + "needs_dane": false, + "weight": 7, + "stmt_txns": 6, + "n_accounts": 1, + "account_ids": [ + 558 + ], + "account_names": [ + "Chikn Oakland" + ], + "descriptor_samples": [ + "TST*CHIKN OAKLAND 3712 FORBES AVE PITTSBURGH 15213 PA USA", + "TST*CHIKN OAKLAND 3712 FORBES AVE PITTSBURGH15213 PA USA" + ] + }, + { + "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 FIRST STREET SAN JOSE 95125 CA USA", + "EBAY O*07-14287-66190 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA", + "EBAY O*07-14287-66189 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA", + "EBAY O*07-14287-66188 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA", + "EBAY O*07-14287-66187 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA", + "EBAY O*07-14287-66186 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA" + ] + }, + { + "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 SHANNON BLVD PITTSBURGH15234 PA USA", + "SQ *NEEDLE & BEAN 320 CASTLE SHANNON BLVD PITTSBURGH 15234 PA USA" + ] + }, + { + "canonical": "Rockauto", + "confidence": 0.94, + "needs_dane": false, + "weight": 7, + "stmt_txns": 6, + "n_accounts": 1, + "account_ids": [ + 557 + ], + "account_names": [ + "Rockauto" + ], + "descriptor_samples": [ + "ROCK AUTO 6418 NORMANDY LANE MADISON 53719 WI USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa", + "confidence": 0.4, + "needs_dane": true, + "weight": 7, + "stmt_txns": 7, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *LA GOURMANDINE OAK116 MEYRAN AVE PITTSBURGH15213 PA USA" + ] + }, + { + "canonical": "University Club", + "confidence": 0.86, + "needs_dane": false, + "weight": 7, + "stmt_txns": 5, + "n_accounts": 2, + "account_ids": [ + 867, + 637 + ], + "account_names": [ + "Pitt University Club", + "University Club" + ], + "descriptor_samples": [ + "PITT UNIVERSITY CLUB 123 UNIVERSITY PLACE PITTSBURGH 15213 PA USA", + "PITT UNIVERSITY CLUB 123 UNIVERSITY PLACE PITTSBURGH15213 PA USA" + ] + }, + { + "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 AMPHITHEATRE PKWY MOUNTAIN VIEW94043 CA USA", + "GOOGLE *YOUTUBE TV 1600 AMPHITHEATRE PKWY MOUNTAIN V94043 CA USA" + ] + }, + { + "canonical": "Barnes & Noble", + "confidence": 0.9, + "needs_dane": false, + "weight": 6, + "stmt_txns": 3, + "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 HILLS VLG PITTSBURGH 15241 PA USA", + "BARNES & NOBLE 2367 800 SETTLERS RIDGE CENTER DR PITTSBURGH 15205 PA USA" + ] + }, + { + "canonical": "Daily Cash Adjustment", + "confidence": 1.0, + "needs_dane": true, + "weight": 6, + "stmt_txns": 6, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "DAILY CASH ADJUSTMENT" + ] + }, + { + "canonical": "PMUSA", + "confidence": 1.0, + "needs_dane": false, + "weight": 6, + "stmt_txns": 4, + "n_accounts": 2, + "account_ids": [ + 885, + 614 + ], + "account_names": [ + "PMUSA", + "Pmusa 281094 Universit" + ], + "descriptor_samples": [ + "PMUSA 281094 UNIVERSIT1100 SPRING ST NW ATLANTA 30309 GA USA" + ] + }, + { + "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 ROSECRANS AVE BLDG E MANHATTAN BEA90266 CA USA", + "REI #14 MANHATTAN BH 1800 ROSECRANS AVE BLDG E MANHATTAN BEA90266 CA USA (RETURN)", + "REI #182 DILLON 306 DILLON RIDGE RD DILLON 80435 CO USA" + ] + }, + { + "canonical": "Spo P&Amp Gspamelasdiner3703 Forbes", + "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 FORBES AVE PITTSBURGH 15213 PA USA" + ] + }, + { + "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 PITTSBURGH 15241 PA USA", + "TARGET 00012534360 EAST WATERFRONT DR HOMESTEAD 15120 PA USA" + ] + }, + { + "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 DRIVE BETHEL PARK 15102 PA USA", + "BEST BUY 000082501000 CRANBERRY SQUARE CRANBERRY TOW16066 PA USA" + ] + }, + { + "canonical": "Bp 9604786Ukani Broqps2900 Banksville", + "confidence": 0.4, + "needs_dane": true, + "weight": 5, + "stmt_txns": 5, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "BP#9604786UKANI BROQPS2900 BANKSVILLE RD PITTSBURGH 15216 PA USA", + "BP#9604786UKANI BROQPS2900 BANKSVILLE RD PITTSBURGH15216 PA USA" + ] + }, + { + "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 734110357020371111 EXPEDIA GROUP WAY W SEATTLE 98119 WA USA", + "EXPEDIA 720693476227451111 EXPEDIA GROUP WAY W SEATTLE 98119 WA USA (RETURN)", + "EXPEDIA 720693476227451111 EXPEDIA GROUP WAY W SEATTLE 98119 WA USA" + ] + }, + { + "canonical": "Home Depot", + "confidence": 0.83, + "needs_dane": false, + "weight": 5, + "stmt_txns": 4, + "n_accounts": 1, + "account_ids": [ + 722 + ], + "account_names": [ + "Home Depot" + ], + "descriptor_samples": [ + "THE HOME DEPOT #4176 4000 OXFORD DR BETHEL PARK 151020000 PA USA" + ] + }, + { + "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 SETTLERS RIDGE CENTER DR PITTSBURGH 15205 PA USA", + "MICHAELS STORES 9944 4000 OXFORD DR BETHEL PAR15102 PA USA" + ] + }, + { + "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 ROCKEFELLER PLAZA NEW YORK 10112 NY USA", + "PEACOCK 81D06 PREMIUM 30 ROCKEFELLER PLAZA NEW YORK 10112 NY USA", + "PEACOCK EF701 PREMIUM 30 ROCKEFELLER PLAZA NEW YORK 10112 NY USA", + "PEACOCK X6258 PREMIUM 30 ROCKEFELLER PLAZA NEW YORK 10112 NY USA" + ] + }, + { + "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 PITTSBURGH15213 PA USA", + "RITA'S #381 6145 STEUBENVILLE PIKE MCKEES ROC15136 PA USA" + ] + }, + { + "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 AVE PITTSBURGH 15213 PA USA" + ] + }, + { + "canonical": "Liberty Mutual", + "confidence": 0.57, + "needs_dane": true, + "weight": 4, + "stmt_txns": 2, + "n_accounts": 2, + "account_ids": [ + 596, + 871 + ], + "account_names": [ + "Liberty Mutual" + ], + "descriptor_samples": [ + "LIBERTY MUTUAL ATTN: COURTNEY MURPHY 225 BORT PORTSMOUTH 03801 NH USA (RETURN)", + "LIBERTY MUTUAL ATTN: COURTNEY MURPHY 225 BORT PORTSMOUTH 03801 NH USA" + ] + }, + { + "canonical": "Openai", + "confidence": 0.48, + "needs_dane": true, + "weight": 4, + "stmt_txns": 2, + "n_accounts": 2, + "account_ids": [ + 576, + 780 + ], + "account_names": [ + "Openai", + "Openai *chatgpt Subscr" + ], + "descriptor_samples": [ + "OPENAI 1455 3RD STREET SAN FRANCISCO94158 CA USA", + "OPENAI *CHATGPT SUBSCR548 MARKET STREET PMB 97273 SAN FRANCISCO94104-5401CA USA" + ] + }, + { + "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 DR PITTSBURGH 15275-1012PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|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 PITTSBURGH 15213 PA USA" + ] + }, + { + "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 WASHINGTON RD MCMURRAY 15317 PA USA" + ] + }, + { + "canonical": "Svdp Castle Shannon", + "confidence": 1.0, + "needs_dane": true, + "weight": 4, + "stmt_txns": 2, + "n_accounts": 2, + "account_ids": [ + 641, + 879 + ], + "account_names": [ + "SVDP Castle Shannon", + "Svdp Castle Shannon" + ], + "descriptor_samples": [ + "SVDP CASTLE SHANNON 3423 LIBRARY ROAD PITTSBURGH15234 PA USA", + "SVDP CASTLE SHANNON 3423 LIBRARY ROAD PITTSBURGH 15234 PA USA" + ] + }, + { + "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 AVE. LONG BEACH 90815 CA USA", + "TACO BELL #715902 3220 STOCKTON HILL RD KINGMAN 86409 AZ USA" + ] + }, + { + "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 BURGETTSTOWN 15021 PA USA" + ] + }, + { + "canonical": "24 7 Travel St 2710 Commerce Rd Goodland 67735 Ks Usa", + "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 RUSSELL 67665 KS USA", + "24 7 TRAVEL ST 2710 COMMERCE RD GOODLAND 67735 KS USA" + ] + }, + { + "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 AVE 502 PITTSBURGH 15219 PA USA" + ] + }, + { + "canonical": "Allegheny Arms", + "confidence": 0.58, + "needs_dane": true, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 657 + ], + "account_names": [ + "Allegheny Arms" + ], + "descriptor_samples": [ + "ALLEGHENY ARMS AND GUN4603 LIBRARY RD BETHEL PARK 15102 PA USA" + ] + }, + { + "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 PITTSBURGH 15213 PA USA" + ] + }, + { + "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 PINELAWN ROAD MELVILLE 11747 NY USA" + ] + }, + { + "canonical": "CVS Pharmacy", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 1, + "n_accounts": 2, + "account_ids": [ + 783, + 816 + ], + "account_names": [ + "CVS Pharmacy", + "Cvs/pharmacy #02348" + ], + "descriptor_samples": [ + "CVS/PHARMACY #05094 328 COCHRAN RD MT LEBANON 15228 PA USA" + ] + }, + { + "canonical": "Dave And Andy S Ho207", + "confidence": 0.4, + "needs_dane": true, + "weight": 3, + "stmt_txns": 3, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *DAVE AND ANDY S HO207 ATWOOD ST PITTSBURGH 15213 PA USA", + "SQ *DAVE AND ANDY S HO207 ATWOOD ST PITTSBURGH15213 PA USA" + ] + }, + { + "canonical": "Dunkin", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 1, + "n_accounts": 2, + "account_ids": [ + 655, + 846 + ], + "account_names": [ + "DUNKIN #362852 CARNEGIE PA", + "Dunkin #348700 Q35" + ], + "descriptor_samples": [ + "DUNKIN #348700 Q35 3907 FORBES AVENUE PITTSBURGH 15213 PA USA" + ] + }, + { + "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 PITTSBURGH 15226 PA USA", + "FIORI S PIZZARIA 3801 WASHINGTON RD CANONSBURG 15317 PA USA" + ] + }, + { + "canonical": "Five Guys", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 723 + ], + "account_names": [ + "Five Guys Pa 0076 Qsr" + ], + "descriptor_samples": [ + "FIVE GUYS PA 0076 QSR 117 S BOUQUET ST PITTSBURGH15213 PA USA", + "FIVE GUYS PA 0076 QSR 117 S BOUQUET ST PITTSBURGH 15213 PA USA" + ] + }, + { + "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 WASHINGTON PIKE BRIDGEVILL15017 PA USA", + "GIANT-EAGLE #0035 GREENTREE & COCHRAN ROADS PITTSBURGH 15220 PA USA" + ] + }, + { + "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 MARMADUKE STREET XCEPTIONAL STYLE LLC PITTSBURGH 15212 PA USA", + "GLOSS* JAYME @ XCEPTI.1901 MARMADUKE STREET XCEPTIONAL STYLE LLC PITTSBURGH 15212-1753PA USA" + ] + }, + { + "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 PITTSBURGH 15213 PA USA" + ] + }, + { + "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 EXPRESSWAY, SUITE 1400 DALLAS 75231 TX USA" + ] + }, + { + "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 HILLS VILLAGE UN PITTSBURGH15241 PA USA", + "J. CREW FACTORY #112 2200 TANGER BLVD STE 997 WASHINGTON 15301 PA USA" + ] + }, + { + "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 DELAWARE 43015 OH USA" + ] + }, + { + "canonical": "Lowe's", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 673 + ], + "account_names": [ + "Lowe's" + ], + "descriptor_samples": [ + "LOWES #00780* 690 WATERFRONT DRIVE EAST MUNHALL 15120 PA USA", + "LOWES #01200* 400 DAVIS BLVD. PITTSBURGH 15275 PA USA" + ] + }, + { + "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 ST SUITE 100 CHICAGO 60661 IL USA" + ] + }, + { + "canonical": "Primanti Bros", + "confidence": 0.46, + "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. PITTSBURGH 15213 PA USA", + "PRIMANTI BROS ROBINSON4501 STEUBENVILLE PIKE PITTSBURGH 15205 PA USA" + ] + }, + { + "canonical": "Redhawk Coffee", + "confidence": 1.0, + "needs_dane": false, + "weight": 3, + "stmt_txns": 2, + "n_accounts": 1, + "account_ids": [ + 721 + ], + "account_names": [ + "Redhawk Coffee" + ], + "descriptor_samples": [ + "SQ *REDHAWK COFFEE 120 MEYRAN AVE PITTSBURGH15213 PA USA", + "SQ *REDHAWK COFFEE 120 MEYRAN AVE PITTSBURGH 15213 PA USA" + ] + }, + { + "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 SUMNER 98390 WA USA" + ] + }, + { + "canonical": "Spiegel Freedman Psych105 Braunlich Drive", + "confidence": 0.4, + "needs_dane": true, + "weight": 3, + "stmt_txns": 3, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SPIEGEL FREEDMAN PSYCH105 BRAUNLICH DRIVE, STE 210 PITTSBURGH 15237 PA USA" + ] + }, + { + "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 WASHINGTON RD MT LEBANON15228 PA USA", + "SPO*MINEO'SPIZZAHOUSE-2128 MURRAY AVE PITTSBURGH 15217 PA USA", + "SPO*MINEO'SPIZZAHOUSE-713 WASHINGTON RD MT LEBANON 15228 PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Pam Pittsburgh Parking325 Daniel Zenker", + "confidence": 0.4, + "needs_dane": true, + "weight": 3, + "stmt_txns": 3, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "PAM PITTSBURGH PARKING325 DANIEL ZENKER DR STE 4 HORSEHEADS 14845 NY USA", + "PAM PITTSBURGH PARKING325 DANIEL ZENKER DR STE 4 HORSEHEADS14845 NY USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Rnk Pittsburgh P3610 Forbes", + "confidence": 0.4, + "needs_dane": true, + "weight": 3, + "stmt_txns": 3, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST*RNK PITTSBURGH - P3610 FORBES AVE PITTSBURGH 15213 PA USA", + "TST*RNK PITTSBURGH - P3610 FORBES AVE PITTSBURGH15213 PA USA" + ] + }, + { + "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 PITTSBURGH 15222 PA USA" + ] + }, + { + "canonical": "The Saloon Of", + "confidence": 0.82, + "needs_dane": false, + "weight": 3, + "stmt_txns": 1, + "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 WASHINGTON RD PITTSBURGH15228 PA USA" + ] + }, + { + "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 WASHINGTON RD STE 1 PITTSBURGH 15241 PA USA" + ] + }, + { + "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 8005928996 94105 CA USA" + ] + }, + { + "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 LIBRARY ROAD PITTSBURGH 15234 PA USA" + ] + }, + { + "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 OXFORD DRIVE #100 BETHEL PAR15102 PA USA", + "WINE AND SPIRITS 9211 5000 OXFORD DRIVE #100 BETHEL PARK 15102 PA USA" + ] + }, + { + "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 PARKWAY VIEW ROAD PITTSBURGH 15205 PA USA" + ] + }, + { + "canonical": "Als Corner", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 762 + ], + "account_names": [ + "Als Corner" + ], + "descriptor_samples": [ + "ALS CORNER 7412 BIG BEAVER BLVD KOPPEL 16136 PA USA" + ] + }, + { + "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 72396 AR USA" + ] + }, + { + "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 AVE N SEATTLE 98109 WA USA" + ] + }, + { + "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 DR, SUIT 9252450773 94588 CA USA" + ] + }, + { + "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 MOAPA 89025 NV USA" + ] + }, + { + "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 BEACH 90802 CA USA" + ] + }, + { + "canonical": "Belvedere's", + "confidence": 0.43, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 625 + ], + "account_names": [ + "Belvedere's" + ], + "descriptor_samples": [ + "SQ *BELVEDERES ULTRA-D4016 BUTLER STREET PITTSBURGH 15201 PA USA" + ] + }, + { + "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 DRIVE #101 WEXFORD 15090 PA USA" + ] + }, + { + "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 30263 GA USA" + ] + }, + { + "canonical": "Borough Of Dormont", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 674 + ], + "account_names": [ + "Borough Of Dormont" + ], + "descriptor_samples": [ + "BOROUGH OF DORMONT 1444 HILLSDALE AVE. PITTSBURGH 15216 PA USA" + ] + }, + { + "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 BLVD WASHINGTON 15301 PA USA" + ] + }, + { + "canonical": "Bruster's Ice Cream", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 604 + ], + "account_names": [ + "Bruster's Ice Cream" + ], + "descriptor_samples": [ + "BRUSTER'S ICE CREAM 4940 LIBRARY RD BETHEL PARK 15102 PA USA" + ] + }, + { + "canonical": "Capital One Transfer Ach Web", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 0, + "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": [] + }, + { + "canonical": "Cash App", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 0, + "n_accounts": 2, + "account_ids": [ + 529, + 857 + ], + "account_names": [ + "Cash App" + ], + "descriptor_samples": [] + }, + { + "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": "Costco Gas", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 0, + "n_accounts": 2, + "account_ids": [ + 840, + 837 + ], + "account_names": [ + "COSTCO GAS #0332 PITTSBURGH PA", + "COSTCO GAS #0649 WEST HOMESTEAPA" + ], + "descriptor_samples": [] + }, + { + "canonical": "Costco Whse", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 0, + "n_accounts": 2, + "account_ids": [ + 842, + 836 + ], + "account_names": [ + "COSTCO WHSE #0332 PITTSBURGH PA", + "COSTCO WHSE #0649 WEST HOMESTEAPA" + ], + "descriptor_samples": [] + }, + { + "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 STE 9097588034 92675 CA USA" + ] + }, + { + "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 RIVERSIDE POWELL 43065 OH USA" + ] + }, + { + "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 ROAD NE WARREN 44483 OH USA" + ] + }, + { + "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 VILLAG PITTSBURGH 152410000 PA USA" + ] + }, + { + "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 30354 GA USA" + ] + }, + { + "canonical": "Dick's Sporting Goods", + "confidence": 1.0, + "needs_dane": true, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 606 + ], + "account_names": [ + "Dick's Sporting Goods" + ], + "descriptor_samples": [ + "DICKS SPORTING GOODS 301 SOUTH HILLS VILLAGE DRIVE SUITE #201 UPPER ST CLAI15241 PA USA" + ] + }, + { + "canonical": "Duquesne Light", + "confidence": 0.61, + "needs_dane": true, + "weight": 2, + "stmt_txns": 0, + "n_accounts": 2, + "account_ids": [ + 893, + 520 + ], + "account_names": [ + "DUQUESNE LIGHT PAYMENT ACH DEBIT xxxxxx5333", + "Duquesne Light" + ], + "descriptor_samples": [] + }, + { + "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 DR PITTSBURGH 15205 PA USA" + ] + }, + { + "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 FRANCISCO94116 CA USA" + ] + }, + { + "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 RTE 3 SPICELAND 47385 IN USA" + ] + }, + { + "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 PITTSBURGH 15213 PA USA" + ] + }, + { + "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 84605 UT USA" + ] + }, + { + "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 PIKE MC KEES ROCKS15136 PA USA" + ] + }, + { + "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 DR PITTSBURGH 15222 PA USA" + ] + }, + { + "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 BLVD WASHINGTON 15301 PA USA" + ] + }, + { + "canonical": "Get Go", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 718 + ], + "account_names": [ + "Get Go #3257" + ], + "descriptor_samples": [ + "GET GO #3257 6513B STEUBENVILLE PIKE PITTSBURGH 15205 PA USA" + ] + }, + { + "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 PIKE PITTSBURGH 15205 PA USA" + ] + }, + { + "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 GRAND CANYON 86023 AZ USA" + ] + }, + { + "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 BRANCH RD MC DONALD 15057 PA USA" + ] + }, + { + "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 SHANNON BLVD PITTSBURGH 15228 PA USA" + ] + }, + { + "canonical": "Hofbrauhaus Pittsburgh2705 S Water", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "HOFBRAUHAUS PITTSBURGH2705 S WATER ST PITTSBURGH 15203 PA USA" + ] + }, + { + "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 ACCESS RD BOULDER CITY 89005 NV USA" + ] + }, + { + "canonical": "In-N-Out Lv - Russell 3397 W. Russell Rd. Las Vegas 89118 Nv Usa", + "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. RUSSELL RD. LAS VEGAS 89118 NV USA" + ] + }, + { + "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 001 NEW HAVEN 06513 CT USA" + ] + }, + { + "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 SMALLMAN ST PITTSBURGH 15222 PA USA" + ] + }, + { + "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 AVE PITTSBURGH 15213 PA USA" + ] + }, + { + "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 EAST BRADY 16028 PA USA" + ] + }, + { + "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 ROAD PITTSBURGH 15237 PA USA" + ] + }, + { + "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 AIRPORT 4100 DONALD DOUGLAS DR LONG BEACH 90808 CA USA" + ] + }, + { + "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 PITTSBURGH 15206 PA USA" + ] + }, + { + "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 HIGHWAY BATES CITY 64011 MO USA" + ] + }, + { + "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 WAY ROSEVILLE 95747 CA USA" + ] + }, + { + "canonical": "Moonlit Burgers", + "confidence": 1.0, + "needs_dane": false, + "weight": 2, + "stmt_txns": 1, + "n_accounts": 1, + "account_ids": [ + 671 + ], + "account_names": [ + "Moonlit Burgers" + ], + "descriptor_samples": [ + "TST*MOONLIT BURGERS 1426 POTOMAC AVE PITTSBURGH 15216 PA USA" + ] + }, + { + "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 AVE PITTSBURGH 15213 PA USA" + ] + }, + { + "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 RIMERSBURG 16248 PA USA" + ] + }, + { + "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 PITTSBURGH 15210 PA USA" + ] + }, + { + "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 CARSON ST PITTSBURGH 15203 PA USA" + ] + }, + { + "canonical": "Pamela's", + "confidence": 0.7, + "needs_dane": true, + "weight": 2, + "stmt_txns": 0, + "n_accounts": 2, + "account_ids": [ + 620, + 821 + ], + "account_names": [ + "Pamela's", + "Pamelas Diner" + ], + "descriptor_samples": [] + }, + { + "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 FORBES AVENUE PITTSBURGH 15217 PA USA" + ] + }, + { + "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 TERRACE ST PITTSBURGH15213 PA USA" + ] + }, + { + "canonical": "Pitt Tuition Pittpaymnt Ach Web", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 0, + "n_accounts": 2, + "account_ids": [ + 531, + 523 + ], + "account_names": [ + "PITT TUITION PITTPAYMNT ACH WEB OPUxxxx0412", + "PITT TUITION PITTPAYMNT ACH WEB OPUxxxx9683" + ], + "descriptor_samples": [] + }, + { + "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 PARK DRIVE HARRISBURG 17111 PA USA" + ] + }, + { + "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 KENWOOD RD BLUE ASH 45242-2812OH USA" + ] + }, + { + "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 AVE FL 31 SEATTLE 98101 WA USA" + ] + }, + { + "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 26TH STREET 8777929455 19112 PA USA" + ] + }, + { + "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 FORBES AVE PITTSBURGH15213 PA USA" + ] + }, + { + "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 WASHINGTON RD MT. LEBANON 15228 PA USA" + ] + }, + { + "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 RIDGE CTR DR PITTSBURGH 152050000 PA USA" + ] + }, + { + "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 STREET PITTSBURGH 15201 PA USA" + ] + }, + { + "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 PITTSBURGH 152030000 PA USA" + ] + }, + { + "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 TEMPLE SALT LAKE 84102 UT USA" + ] + }, + { + "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 LIONSHEAD CIRCLE 888-838-0495 81658 CO USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Mt. Lebanon Boozy Barr315 Mount Lebanon Boulev Pittsburgh 15234 Pa Usa", + "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 LEBANON BOULEV PITTSBURGH 15234 PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|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 BRACKENRIDGE HALL PITTSBURGH 15260 PA USA" + ] + }, + { + "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 SHORE DR PITTSBURGH 15212 PA USA" + ] + }, + { + "canonical": "Summit Racing Equipmen1200 Southeast Avenus", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SUMMIT RACING EQUIPMEN1200 SOUTHEAST AVENUS 330630027044278 OH USA", + "SUMMIT RACING EQUIPMEN1200 SOUTHEAST AVENUS 3306300270 44278 OH USA" + ] + }, + { + "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 8882600402 78701 TX USA" + ] + }, + { + "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 CENTRE DR PITTSBURGH 15205 PA USA" + ] + }, + { + "canonical": "The Milkshake Fact3612 Forbes", + "confidence": 0.4, + "needs_dane": true, + "weight": 2, + "stmt_txns": 2, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST*THE MILKSHAKE FACT3612 FORBES AVE PITTSBURGH 15213 PA USA" + ] + }, + { + "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 PITTSBURGH 15213 PA USA" + ] + }, + { + "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 SOUTH BEND 46628 IN USA" + ] + }, + { + "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 DRIVE WESTLAKE 44145 OH USA" + ] + }, + { + "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 HOLLYWOOD BLVD HOLLYWOOD 90028 CA USA" + ] + }, + { + "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 ST BLOOMFIELD 15224 PA USA" + ] + }, + { + "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. #287 IRVINE 92614 CA USA" + ] + }, + { + "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 FRANCISCO94105 CA USA" + ] + }, + { + "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 SEAVER WAY YPSILANTI 48197 MI USA" + ] + }, + { + "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 MOUNT LEBANON15228 PA USA" + ] + }, + { + "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 E RM 165 SALT LAKE CIT84112 UT USA" + ] + }, + { + "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 DR PITTSBURGH 15275 PA USA" + ] + }, + { + "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 HACIENDA DRIVE PLEASANTON 94588 CA USA" + ] + }, + { + "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 40172", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 819 + ], + "account_names": [ + "7-eleven 40172" + ], + "descriptor_samples": [] + }, + { + "canonical": "7-Eleven Food Stores 525 Main Street Park City 84060 Ut Usa", + "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 STREET PARK CITY 84060 UT USA" + ] + }, + { + "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 CENTRAL AVE CLAYTON 63105 MO USA" + ] + }, + { + "canonical": "Air Force Museum F1100 Spaatz", + "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 SPAATZ ST WRIGHT-PATTER45433 OH USA" + ] + }, + { + "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 ST 415800595994103 CA USA" + ] + }, + { + "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 Rooney", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "AMK ACRISURE CONCESSIO500 ART ROONEY AVENUE PITTSBURGH 15212 PA USA" + ] + }, + { + "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 Deposit", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 519 + ], + "account_names": [ + "ATM Deposit" + ], + "descriptor_samples": [] + }, + { + "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 UNIVERSITY AVE PROVO 84601 UT USA" + ] + }, + { + "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 Potomac Avenue", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "BP#1797700POTOMAC BQPS1530 POTOMAC AVENUE PITTSBURGH 15216 PA USA" + ] + }, + { + "canonical": "Bp 2695000Shreemadhqps", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 813 + ], + "account_names": [ + "Bp#2695000shreemadhqps" + ], + "descriptor_samples": [] + }, + { + "canonical": "Brillobox", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 823 + ], + "account_names": [ + "Brillobox" + ], + "descriptor_samples": [] + }, + { + "canonical": "Buffalo Wild Wngs", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 833 + ], + "account_names": [ + "Buffalo Wild Wngs 0021" + ], + "descriptor_samples": [] + }, + { + "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 AVE PITTSBURGH 15209 PA USA" + ] + }, + { + "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": "Carvana", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 507 + ], + "account_names": [ + "Carvana" + ], + "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": "Check", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 524 + ], + "account_names": [ + "CHECK 141 xxxxx4572" + ], + "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 Forbes", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CHESTNUT HILLS - SQUIR5889 FORBES AVE STE 305 PITTSBURGH 15217 PA USA" + ] + }, + { + "canonical": "Condado Tacos", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 789 + ], + "account_names": [ + "Condado Tacos" + ], + "descriptor_samples": [] + }, + { + "canonical": "Convention Ctr Garage", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 788 + ], + "account_names": [ + "Convention Ctr Garage" + ], + "descriptor_samples": [] + }, + { + "canonical": "Costco Annual Membership Renewal", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 839 + ], + "account_names": [ + "Costco Annual Membership Renewal 1-800-7" + ], + "descriptor_samples": [] + }, + { + "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": "Costco Online Rx", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 843 + ], + "account_names": [ + "COSTCO ONLINE RX 800-955-2292 WA" + ], + "descriptor_samples": [] + }, + { + "canonical": "Cranberry Fitness Cent1000 Westinghouse Drive", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CRANBERRY FITNESS CENT1000 WESTINGHOUSE DRIVE CRANBERRY 16066 PA USA" + ] + }, + { + "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 LAKE 84101 UT USA" + ] + }, + { + "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 Airway", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "CULVERS KINGMAN AIRWAY1737 AIRWAY AVE KINGMAN 86409 AZ USA" + ] + }, + { + "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 SOUTH JORDAN PKWY SOUTH JORD84095 UT USA" + ] + }, + { + "canonical": "Cycle Gear", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 829 + ], + "account_names": [ + "Cycle Gear #105" + ], + "descriptor_samples": [] + }, + { + "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. STUDEBAKER ROAD LONG BEACH 90815 CA USA" + ] + }, + { + "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 ST PARK CITY 84060 UT USA" + ] + }, + { + "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 ST PITTSBURGH15260 PA USA" + ] + }, + { + "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 HIGHWAY 94 THOMPSON 84540 UT USA" + ] + }, + { + "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": "Food For Thought", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 815 + ], + "account_names": [ + "Food For Thought" + ], + "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 Avenue", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "FORBES STREET QPS3955 FORBES AVENUE PITTSBURGH 15213 PA USA" + ] + }, + { + "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 Brookline", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "FOXS PIZZA DEN BROOKLI902 BROOKLINE BLVD PITTSBURGH 15226 PA USA" + ] + }, + { + "canonical": "Fuku Tea", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 787 + ], + "account_names": [ + "Fuku Tea" + ], + "descriptor_samples": [] + }, + { + "canonical": "Gloss Jayme Xceptio1901 Marmaduke Street", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "GLOSS* JAYME @ XCEPTIO1901 MARMADUKE STREET XCEPTIONAL STYLE LLC PITTSBURGH15212 PA USA" + ] + }, + { + "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 PIKE BRIDGEVILL15017 PA USA" + ] + }, + { + "canonical": "Goodwill", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 818 + ], + "account_names": [ + "Goodwill" + ], + "descriptor_samples": [] + }, + { + "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 Shannon", + "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 SHANNON BLVD PITTSBURGH 15234 PA USA" + ] + }, + { + "canonical": "Harbor Freight Tools34100 Cranberry Square", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "HARBOR FREIGHT TOOLS34100 CRANBERRY SQUARE DR CRANBERRY TOW16066 PA USA" + ] + }, + { + "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 DAM ACCESS RD BOULDER CITY 89005 NV USA" + ] + }, + { + "canonical": "Hop Farm Brewing Company", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 814 + ], + "account_names": [ + "Hop Farm Brewing Company" + ], + "descriptor_samples": [] + }, + { + "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 PITTSBURGH15231 PA USA" + ] + }, + { + "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": "Japanpartsc Tokyoto Minatoku Kitaaoyama", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "JAPANPARTSC TOKYOTO MINATOKU KITAAOYAMA 3- TOKYO 1070061 JPNJPN" + ] + }, + { + "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 Delmar", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "TST* KINGSIDE DINER EX6170 DELMAR BLVD SAINT LOUIS 63112 MO USA" + ] + }, + { + "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 WATERFRONT DR WEST HOMESTEA15120 PA USA" + ] + }, + { + "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 COLFAX AVE GOLDEN 80401 CO USA" + ] + }, + { + "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": "Luis Benitez", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 891 + ], + "account_names": [ + "Luis Benitez" + ], + "descriptor_samples": [] + }, + { + "canonical": "Marathon Petro188011", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 811 + ], + "account_names": [ + "Marathon Petro188011" + ], + "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 Avenue", + "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 AVENUE PITTSBURGH 15206 PA USA" + ] + }, + { + "canonical": "Marios East Side5442 Walnut", + "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 WALNUT ST SHADYSIDE 15232 PA USA" + ] + }, + { + "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": "Mher Karakouzian", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 890 + ], + "account_names": [ + "Mher Karakouzian" + ], + "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": "Mr Jones Watches", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 822 + ], + "account_names": [ + "Mr Jones Watches" + ], + "descriptor_samples": [] + }, + { + "canonical": "Mt Lebanon - Parkmobil710 Washington Rd Pittsburgh30309 Pa Usa", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "MT LEBANON - PARKMOBIL710 WASHINGTON RD PITTSBURGH30309 PA USA" + ] + }, + { + "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 Washington Road Pittsburgh15228 Pa Usa", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "MT. LEBANON - FLOWBIRD710 WASHINGTON ROAD PITTSBURGH15228 PA USA" + ] + }, + { + "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., SUITE 735 WASHINGTON 15301 PA USA" + ] + }, + { + "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": "Northshore Garage", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 796 + ], + "account_names": [ + "Northshore Garage" + ], + "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": "Orbis Caffe", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 830 + ], + "account_names": [ + "Orbis Caffe" + ], + "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 EASTPORT PARKWAY 866364746485255 AZ USA" + ] + }, + { + "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 ST ORDERVILLE 84758 UT USA" + ] + }, + { + "canonical": "Pa Courts Fines And Co601 Commonwealth Ave Harrisburg17120-0902 Pa Usa", + "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 COMMONWEALTH AVE HARRISBURG17120-0902 PA USA" + ] + }, + { + "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 Smallman", + "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 SMALLMAN ST PITTSBURGH 15222 PA USA" + ] + }, + { + "canonical": "Park City Desserts401 Main", + "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 ST PARK CITY 84060 UT USA" + ] + }, + { + "canonical": "Partify", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 786 + ], + "account_names": [ + "Partify 7671" + ], + "descriptor_samples": [] + }, + { + "canonical": "Pepboys Store", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 785 + ], + "account_names": [ + "Pepboys Store 549" + ], + "descriptor_samples": [] + }, + { + "canonical": "Pitt Book Center", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 825 + ], + "account_names": [ + "Pitt Book Center 001" + ], + "descriptor_samples": [] + }, + { + "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 Race", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 793 + ], + "account_names": [ + "Pitt Race" + ], + "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": "Ponderosa Golf Course", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 805 + ], + "account_names": [ + "Ponderosa Golf Course" + ], + "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 CRANBERRY 16066 PA USA" + ] + }, + { + "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 Highway", + "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 HIGHWAY 24 TORREY 84775 UT USA" + ] + }, + { + "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 ALAMITOS BOULE LOS ALAMITOS 90720 CA USA" + ] + }, + { + "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 W SALT LAKE 84101 UT USA" + ] + }, + { + "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": "Simones", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 790 + ], + "account_names": [ + "Simones" + ], + "descriptor_samples": [] + }, + { + "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 Airport", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SLC FREDDYSSTEAKBURGERSLC AIRPORT 776 N TERMINAL DR SALT LAKE CIT84122 UT USA" + ] + }, + { + "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 DRIVE NORTHFIELD 05663 VT USA" + ] + }, + { + "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 STREET WICHITA 67213 KS USA" + ] + }, + { + "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 WAY DENVER 80207 CO USA" + ] + }, + { + "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 Mamacitasmexicanbi300 Adams Shoppes Mars", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SPO*MAMACITASMEXICANBI300 ADAMS SHOPPES MARS 16046 PA USA" + ] + }, + { + "canonical": "Sports Car Club Of Ame", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 795 + ], + "account_names": [ + "Sports Car Club Of Ame" + ], + "descriptor_samples": [] + }, + { + "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": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|4891 Villa Fresh Itali301 S Hills Vlg Pittsburgh 15241 Pa Usa", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "4891 VILLA FRESH ITALI301 S HILLS VLG PITTSBURGH 15241 PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|4891 Villa Fresh Itali301 S Hills Vlg Pittsburgh15241 Pa Usa", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "4891 VILLA FRESH ITALI301 S HILLS VLG PITTSBURGH15241 PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|7-Eleven 36193", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 651 + ], + "account_names": [ + "7-eleven 36193" + ], + "descriptor_samples": [] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|7-Eleven 36193 999 Greentree Rd Pittsburgh 15220 Pa Usa", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "7-ELEVEN 36193 999 GREENTREE RD PITTSBURGH 15220 PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|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": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Diamond Parking", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "DIAMOND PARKING 605 1ST AVENUE SEATTLE 98104 WA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Hemingways Cafe Pittsburgh", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 834 + ], + "account_names": [ + "HEMINGWAY'S CAFE PITTSBURGH PA" + ], + "descriptor_samples": [] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Mt Lebanon Golf Course1000 Pine Ave Pittsburgh 152342124 Pa Usa", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "MT LEBANON GOLF COURSE1000 PINE AVE PITTSBURGH 152342124 PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|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 AVE PARK CITY 84060 UT USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Parking", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "PARKING IN PITTSBURGH 232 BLVD OF THE ALLIES PITTSBURGH 15222 PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Pittsburgh", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 750 + ], + "account_names": [ + "Pittsburgh 250" + ], + "descriptor_samples": [] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Sq *La Gourmandine 300 Cochran Road Pittsburgh 15228 Pa Usa", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *LA GOURMANDINE 300 COCHRAN ROAD PITTSBURGH 15228 PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Sq *La Gourmandine 300 Cochran Road Pittsburgh15228 Pa Usa", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "SQ *LA GOURMANDINE 300 COCHRAN ROAD PITTSBURGH15228 PA USA" + ] + }, + { + "canonical": "Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|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 DOUGLAS BLVD SALT LAKE 84113 UT USA" + ] + }, + { + "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 ST., SUITE 1400 SEATTLE 98004 WA USA" + ] + }, + { + "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 Dog Penn", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 807 + ], + "account_names": [ + "The Dog Penn" + ], + "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": "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": "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": "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 Glenlake", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "UPS*1Z9F1752039500088455 GLENLAKE PKWY NE ATLANTA 30328 GA USA" + ] + }, + { + "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 E SALT LAKE 84112 UT USA" + ] + }, + { + "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": "Whole Foods Market Shl", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 835 + ], + "account_names": [ + "Whole Foods Market SHL 866-216-1072 DE" + ], + "descriptor_samples": [] + }, + { + "canonical": "Whole Foods Market Wex", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 841 + ], + "account_names": [ + "Whole Foods Market WEX 866-216-1072 DE" + ], + "descriptor_samples": [] + }, + { + "canonical": "Wholefoods Pit", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 838 + ], + "account_names": [ + "WHOLEFOODS PIT 10694 WFM.COM/HELP PA" + ], + "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": "Withdrawal Xxxxx8118", + "confidence": 0.4, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 533 + ], + "account_names": [ + "WITHDRAWAL xxxxx8118" + ], + "descriptor_samples": [] + }, + { + "canonical": "Wm Supercenter", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 1, + "n_accounts": 0, + "account_ids": [], + "account_names": [], + "descriptor_samples": [ + "WM SUPERCENTER #3848 2228 W 1700 S SYRACUSE 84075 UT USA" + ] + }, + { + "canonical": "wp*pittrace.com", + "confidence": 1.0, + "needs_dane": false, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 799 + ], + "account_names": [ + "wp*pittrace.com" + ], + "descriptor_samples": [] + }, + { + "canonical": "Www Costco Com", + "confidence": 1.0, + "needs_dane": true, + "weight": 1, + "stmt_txns": 0, + "n_accounts": 1, + "account_ids": [ + 844 + ], + "account_names": [ + "WWW COSTCO COM 800-955-2292 WA" + ], + "descriptor_samples": [] + }, + { + "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 WAY 8007009244 84047 UT USA" + ] + }, + { + "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/merchant_clusters.md b/migration/merchant_clusters.md new file mode 100644 index 0000000..d6c0784 --- /dev/null +++ b/migration/merchant_clusters.md @@ -0,0 +1,196 @@ +# Merchant cluster proposal + +- 363 clusters from 372 accounts + 706 statement txns +- **150** auto-proposable (>=0.80, clean canonical) +- **213** 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.55, weight 68, 28 accts, 40 stmt) guess=`Amazon` + - desc: `AMAZON.COM*N428X9Q71 440 TERRY AVE N SEATTLE 98109 WA USA` + - desc: `AMAZON MARK* B008Z3VV0410 TERRY AVENUE NORTH SEATTLE 98109 WA USA` + - desc: `AMAZON MARK* B00SF6VV0410 TERRY AVENUE NORTH SEATTLE 98109 WA USA (RET` + - desc: `AMAZON MARK* B00SF6VV0410 TERRY AVENUE NORTH SEATTLE 98109 WA USA` + - desc: `AMAZON MARK* B03Y156K1410 TERRY AVENUE NORTH SEATTLE 98109 WA USA` + - desc: `AMAZON MARK* B204T9M31410 TERRY AVENUE NORTH SEATTLE 98109 WA USA` + - 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 42, 0 accts, 42 stmt) guess=`Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Pitt Parking Pay Stati127 North` + - desc: `PITT PARKING PAY STATI127 NORTH BELLEFIELD AVE PITTSBURGH 15260 PA USA` + - desc: `PITT PARKING PAY STATI127 NORTH BELLEFIELD AVE PITTSBURGH15260 PA USA` +- **?** (conf 0.78, weight 31, 7 accts, 24 stmt) guess=`McDonald's` + - desc: `MCDONALD'S F1862 3708 FORBES AVE PITTSBURGH 15213 PA USA` + - desc: `MCDONALDS 1862 3708 FORBES AVE PITTSBURGH 15213 PA USA` + - desc: `MCDONALDS 1102 225 MOUNT LEBANON BLVD CASTLE SHANNO15234 PA USA` + - desc: `MCDONALDS 5834 2518 W LIBERTY RD PITTSBURGH 15226 PA USA` + - desc: `MCDONALD'S F1102 225 MT LEBANON BLVD PITTSBURGH 15234 PA USA` + - desc: `MCDONALD'S F27387 1412 B MAIN STREET BURGETTSTOWN 15021 PA USA` + - accts: McDonald's, Mcdonald's F1102, Mcdonald's F1862, Mcdonald's F27387, Mcdonalds 1862, Mcdonalds 33234 +- **?** (conf 1.0, weight 26, 0 accts, 26 stmt) guess=`Castle Shannon Shop` + - desc: `CASTLE SHANNON SHOP' 799 CASTLE SHANNON BLV PITTSBURGH 15234 PA USA` + - desc: `CASTLE SHANNON SHOP' 799 CASTLE SHANNON BLV PITTSBURGH15234 PA USA` +- **?** (conf 0.71, weight 22, 2 accts, 20 stmt) guess=`Market District` + - desc: `MARKET DISTRICT #0014 7000 OXFORD DR BETHEL PARK 15102 PA USA` + - desc: `MARKET DISTRICT #0014 7000 OXFORD DR BETHEL PAR15102 PA USA` + - desc: `MARKET DISTRICT #0047 100 SETTLERS RIDGE CENTER DR PITTSBURGH 15205 PA` + - accts: Market District, Market District Supermarket +- **?** (conf 1.0, weight 17, 0 accts, 17 stmt) guess=`Kuhns Banksville` + - desc: `KUHNS BANKSVILLE 3125 BANKSVILLE ROAD PITTSBURGH 15216 PA USA` + - desc: `KUHNS BANKSVILLE 3125 BANKSVILLE ROAD PITTSBURGH15216 PA USA` +- **?** (conf 0.4, weight 15, 0 accts, 15 stmt) guess=`Apple Com Bill One Apple` + - desc: `APPLE.COM/BILL ONE APPLE PARK WAY CUPERTINO 95014 CA USA` + - desc: `APPLE.COM/US ONE APPLE PARK WAY CUPERTINO 95014 CA USA` + - desc: `APPLE.COM/BILL ONE APPLE PARK CUPERTINO 95014 CA USA` +- **?** (conf 0.75, weight 11, 4 accts, 7 stmt) guess=`Starbucks` + - desc: `STARBUCKS STORE 27117 4022 FIFTH AVE PITTSBURGH 15213 PA USA` + - desc: `STARBUCKS 27117 4022 5TH AVE PITTSBURGH 15213 PA USA` + - desc: `STARBUCKS STORE 27117 4022 FIFTH AVE PITTSBURGH15213 PA USA` + - accts: Starbucks, Starbucks 27117, Starbucks 8007827282, Starbucks Store 27117 +- **?** (conf 0.4, weight 10, 0 accts, 10 stmt) guess=`Claude Ai Subscription548 Market Street` + - desc: `CLAUDE.AI SUBSCRIPTION548 MARKET STREET PMB 90375 SAN FRANCISCO94104 C` + - desc: `CLAUDE.AI SUBSCRIPTION548 MARKET STREET PMB 90375 SAN FRANCI94104 CA U` +- **?** (conf 0.4, weight 10, 0 accts, 10 stmt) guess=`Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh 15213 Pa Usa` + - desc: `SQ *LA GOURMANDINE OAK116 MEYRAN AVE PITTSBURGH 15213 PA USA` +- **?** (conf 1.0, weight 8, 1 accts, 7 stmt) guess=`Comcast / Xfinity` + - desc: `COMCAST / XFINITY 15 SUMMIT PARK DR PITTSBURGH 15275 PA USA` + - desc: `COMCAST / XFINITY 15 SUMMIT PARK DR PITTSBURGH15275 PA USA` + - desc: `COMCAST / XFINITY 15 SUMMIT PARK DR 800-266-2278 15275 PA USA` + - accts: Comcast / Xfinity +- **?** (conf 0.45, weight 8, 8 accts, 0 stmt) guess=`Compeer` + - 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 8, 1 accts, 7 stmt) guess=`T2` + - desc: `T2* MT LEBANON PA 8900 KEYSTONE XING, SUITE 700 INDIANAPOLIS 46240 IN ` + - desc: `T2* MT LEBANON PA 8900 KEYSTONE XING, SUITE 700 INDIANAPOL46240 IN USA` + - accts: T2* Mt Lebanon Pa +- **?** (conf 0.4, weight 8, 0 accts, 8 stmt) guess=`Upmc Student Insurance600 Grant` + - desc: `UPMC STUDENT INSURANCE600 GRANT ST 41ST FL PITTSBURGH 15219 PA USA` + - desc: `UPMC STUDENT INSURANCE600 GRANT ST 41ST FL PITTSBURGH15219 PA USA` + - desc: `UPMC STUDENT INSURANCE600 GRANT ST 41ST FL 888-499-6885 15219 PA USA` +- **?** (conf 0.4, weight 7, 0 accts, 7 stmt) guess=`Ach Deposit Internet Transfer From` + - desc: `ACH DEPOSIT INTERNET TRANSFER FROM ACCOUNT ENDING IN 7552` +- **?** (conf 1.0, weight 7, 0 accts, 7 stmt) guess=`Ebay O` + - desc: `EBAY O*07-14287-66191 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA` + - desc: `EBAY O*07-14287-66190 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA` + - desc: `EBAY O*07-14287-66189 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA` + - desc: `EBAY O*07-14287-66188 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA` + - desc: `EBAY O*07-14287-66187 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA` + - desc: `EBAY O*07-14287-66186 2535 NORTH FIRST STREET SAN JOSE 95125 CA USA` +- **?** (conf 0.9, weight 7, 1 accts, 6 stmt) guess=`Needle & Bean` + - desc: `SQ *NEEDLE & BEAN 320 CASTLE SHANNON BLVD PITTSBURGH15234 PA USA` + - desc: `SQ *NEEDLE & BEAN 320 CASTLE SHANNON BLVD PITTSBURGH 15234 PA USA` + - accts: Needle & Bean +- **?** (conf 0.4, weight 7, 0 accts, 7 stmt) guess=`Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa` + - desc: `SQ *LA GOURMANDINE OAK116 MEYRAN AVE PITTSBURGH15213 PA USA` +- **?** (conf 1.0, weight 7, 0 accts, 7 stmt) guess=`Youtube Tv` + - desc: `GOOGLE *YOUTUBE TV 1600 AMPHITHEATRE PKWY MOUNTAIN VIEW94043 CA USA` + - desc: `GOOGLE *YOUTUBE TV 1600 AMPHITHEATRE PKWY MOUNTAIN V94043 CA USA` +- **?** (conf 1.0, weight 6, 0 accts, 6 stmt) guess=`Daily Cash Adjustment` + - desc: `DAILY CASH ADJUSTMENT` +- **?** (conf 0.4, weight 6, 0 accts, 6 stmt) guess=`Spo P&Amp Gspamelasdiner3703 Forbes` + - desc: `SPO*P&G'SPAMELA'SDINER3703 FORBES AVE PITTSBURGH 15213 PA USA` +- **?** (conf 0.4, weight 5, 0 accts, 5 stmt) guess=`Bp 9604786Ukani Broqps2900 Banksville` + - desc: `BP#9604786UKANI BROQPS2900 BANKSVILLE RD PITTSBURGH 15216 PA USA` + - desc: `BP#9604786UKANI BROQPS2900 BANKSVILLE RD PITTSBURGH15216 PA USA` +- **?** (conf 0.69, weight 5, 1 accts, 4 stmt) guess=`Peacock` + - desc: `PEACOCK 75AE1 PREMIUM 30 ROCKEFELLER PLAZA NEW YORK 10112 NY USA` + - desc: `PEACOCK 81D06 PREMIUM 30 ROCKEFELLER PLAZA NEW YORK 10112 NY USA` + - desc: `PEACOCK EF701 PREMIUM 30 ROCKEFELLER PLAZA NEW YORK 10112 NY USA` + - desc: `PEACOCK X6258 PREMIUM 30 ROCKEFELLER PLAZA NEW YORK 10112 NY USA` + - accts: Peacock +- **?** (conf 0.4, weight 4, 0 accts, 4 stmt) guess=`Enricos Tazza Do125 Lytton` + - desc: `SQ *ENRICO'S TAZZA D'O125 LYTTON AVE PITTSBURGH 15213 PA USA` +- **?** (conf 0.57, weight 4, 2 accts, 2 stmt) guess=`Liberty Mutual` + - desc: `LIBERTY MUTUAL ATTN: COURTNEY MURPHY 225 BORT PORTSMOUTH 03801 NH USA ` + - desc: `LIBERTY MUTUAL ATTN: COURTNEY MURPHY 225 BORT PORTSMOUTH 03801 NH USA` + - accts: Liberty Mutual +- **?** (conf 0.48, weight 4, 2 accts, 2 stmt) guess=`Openai` + - desc: `OPENAI 1455 3RD STREET SAN FRANCISCO94158 CA USA` + - desc: `OPENAI *CHATGPT SUBSCR548 MARKET STREET PMB 97273 SAN FRANCISCO94104-5` + - accts: Openai, Openai *chatgpt Subscr +- **?** (conf 0.4, weight 4, 0 accts, 4 stmt) guess=`Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Hemingway S Cafe` + - desc: `HEMINGWAY S CAFE 3911 FORBES AVE PITTSBURGH 15213 PA USA` +- **?** (conf 1.0, weight 4, 1 accts, 3 stmt) guess=`Subaru Of South Hills` + - desc: `SUBARU OF SOUTH HILLS 3260 WASHINGTON RD MCMURRAY 15317 PA USA` + - accts: Subaru Of South Hills +- **?** (conf 1.0, weight 4, 2 accts, 2 stmt) guess=`Svdp Castle Shannon` + - desc: `SVDP CASTLE SHANNON 3423 LIBRARY ROAD PITTSBURGH15234 PA USA` + - desc: `SVDP CASTLE SHANNON 3423 LIBRARY ROAD PITTSBURGH 15234 PA USA` + - accts: SVDP Castle Shannon, Svdp Castle Shannon +- **?** (conf 0.4, weight 3, 1 accts, 2 stmt) guess=`24 7 Travel St 2710 Commerce Rd Goodland 67735 Ks Usa` + - desc: `24 7 TRAVEL ST 1415 S FOSSIL ST RUSSELL 67665 KS USA` + - desc: `24 7 TRAVEL ST 2710 COMMERCE RD GOODLAND 67735 KS USA` + - accts: 24 7 Travel St +- **?** (conf 0.58, weight 3, 1 accts, 2 stmt) guess=`Allegheny Arms` + - desc: `ALLEGHENY ARMS AND GUN4603 LIBRARY RD BETHEL PARK 15102 PA USA` + - accts: Allegheny Arms +- **?** (conf 0.4, weight 3, 0 accts, 3 stmt) guess=`Dave And Andy S Ho207` + - desc: `SQ *DAVE AND ANDY S HO207 ATWOOD ST PITTSBURGH 15213 PA USA` + - desc: `SQ *DAVE AND ANDY S HO207 ATWOOD ST PITTSBURGH15213 PA USA` +- **?** (conf 1.0, weight 3, 1 accts, 2 stmt) guess=`Gloss* Jayme @ Xcepti.` + - desc: `GLOSS* JAYME @ XCEPTI.1901 MARMADUKE STREET XCEPTIONAL STYLE LLC PITTS` + - desc: `GLOSS* JAYME @ XCEPTI.1901 MARMADUKE STREET XCEPTIONAL STYLE LLC PITTS` + - accts: Gloss* Jayme @ Xcepti. +- **?** (conf 1.0, weight 3, 0 accts, 3 stmt) guess=`Jegs Com` + - desc: `JEGS.COM 101 JEGS BOULEVARD DELAWARE 43015 OH USA` +- **?** (conf 0.46, weight 3, 1 accts, 2 stmt) guess=`Primanti Bros` + - desc: `PRIMANTI BROS 3803 FORBES AVE. PITTSBURGH 15213 PA USA` + - desc: `PRIMANTI BROS ROBINSON4501 STEUBENVILLE PIKE PITTSBURGH 15205 PA USA` + - accts: Primanti Bros +- **?** (conf 0.4, weight 3, 0 accts, 3 stmt) guess=`Spiegel Freedman Psych105 Braunlich Drive` + - desc: `SPIEGEL FREEDMAN PSYCH105 BRAUNLICH DRIVE, STE 210 PITTSBURGH 15237 PA` +- **?** (conf 1.0, weight 3, 0 accts, 3 stmt) guess=`Spo Mineospizzahouse` + - desc: `SPO*MINEO'SPIZZAHOUSE-713 WASHINGTON RD MT LEBANON15228 PA USA` + - desc: `SPO*MINEO'SPIZZAHOUSE-2128 MURRAY AVE PITTSBURGH 15217 PA USA` + - desc: `SPO*MINEO'SPIZZAHOUSE-713 WASHINGTON RD MT LEBANON 15228 PA USA` +- **?** (conf 0.4, weight 3, 0 accts, 3 stmt) guess=`Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Pam Pittsburgh Parking325 Daniel Zenker` + - desc: `PAM PITTSBURGH PARKING325 DANIEL ZENKER DR STE 4 HORSEHEADS 14845 NY U` + - desc: `PAM PITTSBURGH PARKING325 DANIEL ZENKER DR STE 4 HORSEHEADS14845 NY US` +- **?** (conf 0.4, weight 3, 0 accts, 3 stmt) guess=`Sq *La Gourmandine Oak116 Meyran Ave Pittsburgh15213 Pa Usa|Rnk Pittsburgh P3610 Forbes` + - desc: `TST*RNK PITTSBURGH - P3610 FORBES AVE PITTSBURGH 15213 PA USA` + - desc: `TST*RNK PITTSBURGH - P3610 FORBES AVE PITTSBURGH15213 PA USA` +- **?** (conf 0.4, weight 3, 1 accts, 2 stmt) guess=`Willi S Ski And Snowb3738` + - desc: `WILLI S SKI AND SNOWB3738 LIBRARY ROAD PITTSBURGH 15234 PA USA` + - accts: Willi S Ski And Snowb + +## AUTO-PROPOSABLE (top 40 by volume) + +- `GomobilePGH` (conf 1.0, weight 47, merges 4 accts) ids=[865, 642, 559, 781] +- `Sheetz` (conf 1.0, weight 31, merges 7 accts) ids=[566, 744, 739, 567, 774, 794, 738] +- `Sunoco` (conf 1.0, weight 19, merges 6 accts) ids=[599, 638, 827, 767, 820, 715] +- `Autozone` (conf 1.0, weight 17, merges 6 accts) ids=[593, 812, 724, 714, 591, 806] +- `Harbor Freight Tools` (conf 0.95, weight 14, merges 3 accts) ids=[878, 569, 737] +- `Chick-fil-A` (conf 1.0, weight 12, merges 5 accts) ids=[630, 810, 832, 712, 702] +- `Petco` (conf 1.0, weight 12, merges 4 accts) ids=[546, 729, 797, 633] +- `D J*wsj` (conf 1.0, weight 8, merges 1 accts) ids=[553] +- `Raising Cane's` (conf 1.0, weight 8, merges 3 accts) ids=[868, 561, 828] +- `Chikn Oakland` (conf 1.0, weight 7, merges 1 accts) ids=[558] +- `Rockauto` (conf 0.94, weight 7, merges 1 accts) ids=[557] +- `University Club` (conf 0.86, weight 7, merges 2 accts) ids=[867, 637] +- `Barnes & Noble` (conf 0.9, weight 6, merges 3 accts) ids=[603, 817, 658] +- `PMUSA` (conf 1.0, weight 6, merges 2 accts) ids=[885, 614] +- `REI` (conf 1.0, weight 6, merges 2 accts) ids=[684, 682] +- `Target` (conf 1.0, weight 6, merges 2 accts) ids=[605, 731] +- `Best Buy` (conf 1.0, weight 5, merges 2 accts) ids=[751, 740] +- `Expedia` (conf 1.0, weight 5, merges 2 accts) ids=[717, 711] +- `Home Depot` (conf 0.83, weight 5, merges 1 accts) ids=[722] +- `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] +- `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] +- `CVS Pharmacy` (conf 1.0, weight 3, merges 2 accts) ids=[783, 816] +- `Dunkin` (conf 1.0, weight 3, merges 2 accts) ids=[655, 846] +- `Fiori's Pizzaria` (conf 0.91, weight 3, merges 1 accts) ids=[551] +- `Five Guys` (conf 1.0, weight 3, merges 1 accts) ids=[723] +- `Giant Eagle` (conf 1.0, weight 3, merges 1 accts) ids=[592] +- `Hemingway's Cafe` (conf 1.0, weight 3, merges 1 accts) ids=[560] +- `Hinge` (conf 1.0, weight 3, merges 1 accts) ids=[623] +- `J.Crew Factory` (conf 1.0, weight 3, merges 1 accts) ids=[617] +- `Lowe's` (conf 1.0, weight 3, merges 1 accts) ids=[673] +- `ParkWhiz` (conf 1.0, weight 3, merges 1 accts) ids=[670] +- `Redhawk Coffee` (conf 1.0, weight 3, merges 1 accts) ids=[721] +- `Rei Com` (conf 1.0, weight 3, merges 1 accts) ids=[687] +- `T-Gateway Center` (conf 0.9, weight 3, merges 1 accts) ids=[772] diff --git a/migration/mock_firefly.py b/migration/mock_firefly.py new file mode 100644 index 0000000..b4e8c46 --- /dev/null +++ b/migration/mock_firefly.py @@ -0,0 +1,133 @@ +"""Stateful mock Firefly III API for skill evals only. Stdlib http.server. + +Persists posted transactions to a JSON file so a SECOND import of the same +statement correctly reports duplicates (the dedup eval depends on this). + +Pre-seeded expense/revenue accounts let us verify the skill consolidates onto +an EXISTING account ("Sheetz") instead of auto-creating "SHEETZ #432". + +Run: python mock_firefly.py +""" + +import json +import sys +import urllib.parse +from http.server import BaseHTTPRequestHandler, HTTPServer + +STATE_FILE = "mock_state.json" + +SEED_ACCOUNTS = [ + {"id": "10", "name": "Sheetz", "type": "Expense account"}, + {"id": "11", "name": "Amazon", "type": "Expense account"}, + {"id": "12", "name": "Costco", "type": "Expense account"}, + {"id": "13", "name": "Local Cafe", "type": "Expense account"}, + {"id": "20", "name": "Employer Payroll", "type": "Revenue account"}, +] + + +def load_state(): + try: + with open(STATE_FILE) as f: + return json.load(f) + except FileNotFoundError: + return {"txns": [], "next_id": 1000} + + +def save_state(s): + with open(STATE_FILE, "w") as f: + json.dump(s, f) + + +class H(BaseHTTPRequestHandler): + def log_message(self, *a): + pass + + def _send(self, code, obj, ct="application/json"): + body = json.dumps(obj).encode() + self.send_response(code) + self.send_header("Content-Type", ct) + self.send_header("Content-Length", str(len(body))) + self.end_headers() + self.wfile.write(body) + + def do_GET(self): + u = urllib.parse.urlparse(self.path) + q = urllib.parse.parse_qs(u.query) + path = u.path.replace("/api/v1/", "") + + if path == "about": + return self._send(200, {"data": {"version": "6.1.0-mock"}}) + + if path == "search/transactions": + query = q.get("query", [""])[0] + ext = "" + if "external_id:" in query: + ext = query.split('external_id:"')[1].rstrip('"') + st = load_state() + hits = [t for t in st["txns"] if t["external_id"] == ext] + return self._send( + 200, + {"data": [{"id": str(h["id"])} for h in hits], + "meta": {"pagination": {"total_pages": 1}}}, + ct="application/vnd.api+json", + ) + + if path == "autocomplete/accounts": + query = q.get("query", [""])[0].lower() + types = q.get("types", [""])[0] + res = [ + a for a in SEED_ACCOUNTS + if (query in a["name"].lower() or not query) + and (a["type"] in types if types else True) + ] + return self._send(200, res) + + if path == "accounts": + t = q.get("type", ["all"])[0] + tmap = {"expense": "Expense account", "revenue": "Revenue account"} + res = [ + {"id": a["id"], "attributes": {"name": a["name"]}} + for a in SEED_ACCOUNTS + if a["type"] == tmap.get(t) + ] + return self._send( + 200, + {"data": res, "meta": {"pagination": {"total_pages": 1}}}, + ct="application/vnd.api+json", + ) + + self._send(404, {"message": f"no mock for GET {path}"}) + + def do_POST(self): + u = urllib.parse.urlparse(self.path) + path = u.path.replace("/api/v1/", "") + n = int(self.headers.get("Content-Length", 0)) + body = json.loads(self.rfile.read(n) or "{}") + + if path == "transactions": + split = body["transactions"][0] + ext = split.get("external_id", "") + st = load_state() + if body.get("error_if_duplicate_hash") and any( + t["external_id"] == ext for t in st["txns"] + ): + return self._send( + 422, + {"message": "Duplicate transaction.", + "errors": {"transactions.0": ["Duplicate of existing."]}}, + ) + tid = st["next_id"] + st["next_id"] += 1 + st["txns"].append({"id": tid, "external_id": ext, "split": split}) + save_state(st) + return self._send(200, {"data": {"id": str(tid), + "attributes": split}}) + + self._send(404, {"message": f"no mock for POST {path}"}) + + +if __name__ == "__main__": + port = int(sys.argv[1]) if len(sys.argv) > 1 else 8088 + if len(sys.argv) > 2: + STATE_FILE = sys.argv[2] + HTTPServer(("127.0.0.1", port), H).serve_forever() diff --git a/migration/pnc_classified.json b/migration/pnc_classified.json new file mode 100644 index 0000000..3678cc9 --- /dev/null +++ b/migration/pnc_classified.json @@ -0,0 +1,902 @@ +[ + { + "date": "20260515", + "amt": -78.41, + "desc": "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WE", + "class": "transfer", + "target": "Costco Visa Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2026-05-15#" + }, + { + "date": "20260508", + "amt": 0.05, + "desc": "INTEREST PAYMENT INTEREST PAYMENT", + "class": "income", + "target": "Interest Income", + "category": "Investment: Interest", + "review": false, + "fitid": "952673929534609207#2#001#2026-05-08#" + }, + { + "date": "20260508", + "amt": -2150.0, + "desc": "CHECK 143 xxxxx2209 CHECK 143 xxxxx2209", + "class": "review", + "target": "CHECK (payee?)", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2026-05-08#" + }, + { + "date": "20260505", + "amt": -2150.0, + "desc": "CHECK 142 xxxxx1771 CHECK 142 xxxxx1771", + "class": "review", + "target": "CHECK (payee?)", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2026-05-05#" + }, + { + "date": "20260504", + "amt": -48.09, + "desc": "DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH ", + "class": "expense", + "target": "Duquesne Light", + "category": "Utilities: Electric", + "review": false, + "fitid": "952673929534609207#2#001#2026-05-04#" + }, + { + "date": "20260504", + "amt": -1025.0, + "desc": "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS AC", + "class": "expense", + "target": "Compeer Investments", + "category": "Rent", + "review": false, + "fitid": "952673929534609207#1#001#2026-05-04#" + }, + { + "date": "20260501", + "amt": -1650.72, + "desc": "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT AC", + "class": "transfer", + "target": "Apple Credit Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2026-05-01#" + }, + { + "date": "20260430", + "amt": 2778.7, + "desc": "UNIV PITTSBURGH PAYROLL ACH CRED UNIV PITTSBURGH PAYROLL ACH", + "class": "income", + "target": "Pitt Salary", + "category": "Wages", + "review": false, + "fitid": "952673929534609207#1#001#2026-04-30#" + }, + { + "date": "20260428", + "amt": 3550.0, + "desc": "SCHWAB BROKERAGE MONEYLINK ACH C SCHWAB BROKERAGE MONEYLINK ", + "class": "transfer", + "target": "Schwab (Stocks/Savings?)", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2026-04-28#" + }, + { + "date": "20260427", + "amt": -60.0, + "desc": "CHECK 144 xxxxx4324 CHECK 144 xxxxx4324", + "class": "review", + "target": "CHECK (payee?)", + "category": null, + "review": true, + "fitid": "952673929534609207#2#001#2026-04-27#" + }, + { + "date": "20260427", + "amt": 4000.0, + "desc": "SCHWAB BROKERAGE MONEYLINK ACH C SCHWAB BROKERAGE MONEYLINK ", + "class": "transfer", + "target": "Schwab (Stocks/Savings?)", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2026-04-27#" + }, + { + "date": "20260417", + "amt": 258.96, + "desc": "VENMO CASHOUT ACH CREDIT xxxxxxx VENMO CASHOUT ACH CREDIT xx", + "class": "dontknow", + "target": "Don't Know", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2026-04-17#" + }, + { + "date": "20260415", + "amt": -116.09, + "desc": "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WE", + "class": "transfer", + "target": "Costco Visa Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2026-04-15#" + }, + { + "date": "20260414", + "amt": -50.0, + "desc": "ATM WITHDRAWAL PNCPM1896 N0414 3 ATM WITHDRAWAL PNCPM1896 N0", + "class": "transfer", + "target": "Cash", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2026-04-14#" + }, + { + "date": "20260413", + "amt": 1.05, + "desc": "ZEL FROM MHER KARAKOUZIAN ZEL FROM MHER KARAKOUZIAN", + "class": "dontknow", + "target": "Don't Know", + "category": null, + "review": true, + "fitid": "952673929534609207#2#001#2026-04-13#" + }, + { + "date": "20260413", + "amt": 3.45, + "desc": "ZEL FROM Luis Benitez ZEL FROM Luis Benitez", + "class": "dontknow", + "target": "Don't Know", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2026-04-13#" + }, + { + "date": "20260408", + "amt": 0.08, + "desc": "INTEREST PAYMENT INTEREST PAYMENT", + "class": "income", + "target": "Interest Income", + "category": "Investment: Interest", + "review": false, + "fitid": "952673929534609207#1#001#2026-04-08#" + }, + { + "date": "20260402", + "amt": -36.55, + "desc": "DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH ", + "class": "expense", + "target": "Duquesne Light", + "category": "Utilities: Electric", + "review": false, + "fitid": "952673929534609207#2#001#2026-04-02#" + }, + { + "date": "20260402", + "amt": -1025.0, + "desc": "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS AC", + "class": "expense", + "target": "Compeer Investments", + "category": "Rent", + "review": false, + "fitid": "952673929534609207#1#001#2026-04-02#" + }, + { + "date": "20260401", + "amt": -3000.0, + "desc": "SCHWAB BROKERAGE MONEYLINK ACH D SCHWAB BROKERAGE MONEYLINK ", + "class": "transfer", + "target": "Schwab (Stocks/Savings?)", + "category": null, + "review": true, + "fitid": "952673929534609207#2#001#2026-04-01#" + }, + { + "date": "20260401", + "amt": -5000.0, + "desc": "SCHWAB BROKERAGE MONEYLINK ACH W SCHWAB BROKERAGE MONEYLINK ", + "class": "transfer", + "target": "Schwab (Stocks/Savings?)", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2026-04-01#" + }, + { + "date": "20260331", + "amt": 2778.7, + "desc": "UNIV PITTSBURGH PAYROLL ACH CRED UNIV PITTSBURGH PAYROLL ACH", + "class": "income", + "target": "Pitt Salary", + "category": "Wages", + "review": false, + "fitid": "952673929534609207#1#001#2026-03-31#" + }, + { + "date": "20260330", + "amt": -9976.38, + "desc": "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT AC", + "class": "transfer", + "target": "Apple Credit Card", + "category": null, + "review": false, + "fitid": "952673929534609207#2#001#2026-03-30#" + }, + { + "date": "20260330", + "amt": 124.0, + "desc": "IRS TREAS 310 TAX REF ACH CREDIT IRS TREAS 310 TAX REF ACH C", + "class": "income", + "target": "IRS Refund", + "category": "Taxes", + "review": false, + "fitid": "952673929534609207#1#001#2026-03-30#" + }, + { + "date": "20260318", + "amt": -100.0, + "desc": "ATM WITHDRAWAL PNCPJ6207 N0318 3 ATM WITHDRAWAL PNCPJ6207 N0", + "class": "transfer", + "target": "Cash", + "category": null, + "review": false, + "fitid": "952673929534609207#2#001#2026-03-18#" + }, + { + "date": "20260318", + "amt": 14715.0, + "desc": "ATM DEPOSIT xxxx5883 DEPOSIT 403 ATM DEPOSIT xxxx5883 DEPOSI", + "class": "transfer", + "target": "Coverdell", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2026-03-18#" + }, + { + "date": "20260316", + "amt": -194.65, + "desc": "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WE", + "class": "transfer", + "target": "Costco Visa Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2026-03-16#" + }, + { + "date": "20260309", + "amt": 0.07, + "desc": "INTEREST PAYMENT INTEREST PAYMENT", + "class": "income", + "target": "Interest Income", + "category": "Investment: Interest", + "review": false, + "fitid": "952673929534609207#1#001#2026-03-09#" + }, + { + "date": "20260304", + "amt": -38.22, + "desc": "DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH ", + "class": "expense", + "target": "Duquesne Light", + "category": "Utilities: Electric", + "review": false, + "fitid": "952673929534609207#1#001#2026-03-04#" + }, + { + "date": "20260303", + "amt": -1025.0, + "desc": "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS AC", + "class": "expense", + "target": "Compeer Investments", + "category": "Rent", + "review": false, + "fitid": "952673929534609207#1#001#2026-03-03#" + }, + { + "date": "20260302", + "amt": -5755.53, + "desc": "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT AC", + "class": "transfer", + "target": "Apple Credit Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2026-03-02#" + }, + { + "date": "20260227", + "amt": 2778.7, + "desc": "UNIV PITTSBURGH SALARY ACH CREDI UNIV PITTSBURGH SALARY ACH ", + "class": "income", + "target": "Pitt Salary", + "category": "Wages", + "review": false, + "fitid": "952673929534609207#1#001#2026-02-27#" + }, + { + "date": "20260217", + "amt": -164.55, + "desc": "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WE", + "class": "transfer", + "target": "Costco Visa Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2026-02-17#" + }, + { + "date": "20260209", + "amt": 0.09, + "desc": "INTEREST PAYMENT INTEREST PAYMENT", + "class": "income", + "target": "Interest Income", + "category": "Investment: Interest", + "review": false, + "fitid": "952673929534609207#1#001#2026-02-09#" + }, + { + "date": "20260203", + "amt": -1025.0, + "desc": "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS AC", + "class": "expense", + "target": "Compeer Investments", + "category": "Rent", + "review": false, + "fitid": "952673929534609207#1#001#2026-02-03#" + }, + { + "date": "20260202", + "amt": -230.0, + "desc": "ATM WITHDRAWAL PNCPM1896 N0202 3 ATM WITHDRAWAL PNCPM1896 N0", + "class": "transfer", + "target": "Cash", + "category": null, + "review": false, + "fitid": "952673929534609207#3#001#2026-02-02#" + }, + { + "date": "20260202", + "amt": -41.63, + "desc": "DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH ", + "class": "expense", + "target": "Duquesne Light", + "category": "Utilities: Electric", + "review": false, + "fitid": "952673929534609207#2#001#2026-02-02#" + }, + { + "date": "20260202", + "amt": -3107.16, + "desc": "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT AC", + "class": "transfer", + "target": "Apple Credit Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2026-02-02#" + }, + { + "date": "20260130", + "amt": 3032.5, + "desc": "UNIV PITTSBURGH SALARY ACH CREDI UNIV PITTSBURGH SALARY ACH ", + "class": "income", + "target": "Pitt Salary", + "category": "Wages", + "review": false, + "fitid": "952673929534609207#1#001#2026-01-30#" + }, + { + "date": "20260127", + "amt": -30.0, + "desc": "PITT TUITION PITTPAYMNT ACH WEB PITT TUITION PITTPAYMNT ACH ", + "class": "expense", + "target": "University of Pittsburgh", + "category": "Education", + "review": false, + "fitid": "952673929534609207#1#001#2026-01-27#" + }, + { + "date": "20260115", + "amt": -200.0, + "desc": "CHECK 141 xxxxx4572 CHECK 141 xxxxx4572", + "class": "review", + "target": "CHECK (payee?)", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2026-01-15#" + }, + { + "date": "20260109", + "amt": 10.0, + "desc": "OTHER FIN INST ATM SURCHARGE REI OTHER FIN INST ATM SURCHARG", + "class": "income", + "target": "Don't Know", + "category": null, + "review": false, + "fitid": "952673929534609207#2#001#2026-01-09#" + }, + { + "date": "20260109", + "amt": 0.12, + "desc": "INTEREST PAYMENT INTEREST PAYMENT", + "class": "income", + "target": "Interest Income", + "category": "Investment: Interest", + "review": false, + "fitid": "952673929534609207#1#001#2026-01-09#" + }, + { + "date": "20260105", + "amt": -1025.0, + "desc": "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS AC", + "class": "expense", + "target": "Compeer Investments", + "category": "Rent", + "review": false, + "fitid": "952673929534609207#1#001#2026-01-05#" + }, + { + "date": "20260102", + "amt": -5408.31, + "desc": "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT AC", + "class": "transfer", + "target": "Apple Credit Card", + "category": null, + "review": false, + "fitid": "952673929534609207#3#001#2026-01-02#" + }, + { + "date": "20260102", + "amt": -111.99, + "desc": "ATM WITHDRAWAL MACNVTCOA0N1231 3 ATM WITHDRAWAL MACNVTCOA0N1", + "class": "transfer", + "target": "Cash", + "category": null, + "review": false, + "fitid": "952673929534609207#2#001#2026-01-02#" + }, + { + "date": "20251231", + "amt": -48.01, + "desc": "DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH ", + "class": "expense", + "target": "Duquesne Light", + "category": "Utilities: Electric", + "review": false, + "fitid": "952673929534609207#2#001#2025-12-31#" + }, + { + "date": "20251231", + "amt": 2703.46, + "desc": "UNIV PITTSBURGH SALARY ACH CREDI UNIV PITTSBURGH SALARY ACH ", + "class": "income", + "target": "Pitt Salary", + "category": "Wages", + "review": false, + "fitid": "952673929534609207#1#001#2025-12-31#" + }, + { + "date": "20251217", + "amt": 100.0, + "desc": "ZEL FROM MATTHEW BARRY ZEL FROM MATTHEW BARRY", + "class": "dontknow", + "target": "Don't Know", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2025-12-17#" + }, + { + "date": "20251216", + "amt": 9.1, + "desc": "ZEL FROM Luis Benitez ZEL FROM Luis Benitez", + "class": "dontknow", + "target": "Don't Know", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2025-12-16#" + }, + { + "date": "20251215", + "amt": -223.79, + "desc": "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WE", + "class": "transfer", + "target": "Costco Visa Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2025-12-15#" + }, + { + "date": "20251208", + "amt": 0.12, + "desc": "INTEREST PAYMENT INTEREST PAYMENT", + "class": "income", + "target": "Interest Income", + "category": "Investment: Interest", + "review": false, + "fitid": "952673929534609207#1#001#2025-12-08#" + }, + { + "date": "20251202", + "amt": -1025.0, + "desc": "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS AC", + "class": "expense", + "target": "Compeer Investments", + "category": "Rent", + "review": false, + "fitid": "952673929534609207#1#001#2025-12-02#" + }, + { + "date": "20251201", + "amt": -41.26, + "desc": "DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH ", + "class": "expense", + "target": "Duquesne Light", + "category": "Utilities: Electric", + "review": false, + "fitid": "952673929534609207#2#001#2025-12-01#" + }, + { + "date": "20251201", + "amt": -2402.93, + "desc": "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT AC", + "class": "transfer", + "target": "Apple Credit Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2025-12-01#" + }, + { + "date": "20251126", + "amt": 2703.46, + "desc": "UNIV PITTSBURGH SALARY ACH CREDI UNIV PITTSBURGH SALARY ACH ", + "class": "income", + "target": "Pitt Salary", + "category": "Wages", + "review": false, + "fitid": "952673929534609207#1#001#2025-11-26#" + }, + { + "date": "20251117", + "amt": -15.67, + "desc": "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WE", + "class": "transfer", + "target": "Costco Visa Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2025-11-17#" + }, + { + "date": "20251110", + "amt": 3.0, + "desc": "OTHER FIN INST ATM SURCHARGE REI OTHER FIN INST ATM SURCHARG", + "class": "income", + "target": "Don't Know", + "category": null, + "review": false, + "fitid": "952673929534609207#2#001#2025-11-10#" + }, + { + "date": "20251110", + "amt": 0.16, + "desc": "INTEREST PAYMENT INTEREST PAYMENT", + "class": "income", + "target": "Interest Income", + "category": "Investment: Interest", + "review": false, + "fitid": "952673929534609207#1#001#2025-11-10#" + }, + { + "date": "20251104", + "amt": -1025.0, + "desc": "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS AC", + "class": "expense", + "target": "Compeer Investments", + "category": "Rent", + "review": false, + "fitid": "952673929534609207#1#001#2025-11-04#" + }, + { + "date": "20251103", + "amt": -4487.09, + "desc": "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT AC", + "class": "transfer", + "target": "Apple Credit Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2025-11-03#" + }, + { + "date": "20251031", + "amt": 2703.46, + "desc": "UNIV PITTSBURGH SALARY ACH CREDI UNIV PITTSBURGH SALARY ACH ", + "class": "income", + "target": "Pitt Salary", + "category": "Wages", + "review": false, + "fitid": "952673929534609207#1#001#2025-10-31#" + }, + { + "date": "20251016", + "amt": -94.52, + "desc": "DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH ", + "class": "expense", + "target": "Duquesne Light", + "category": "Utilities: Electric", + "review": false, + "fitid": "952673929534609207#1#001#2025-10-16#" + }, + { + "date": "20251015", + "amt": -1194.3, + "desc": "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WE", + "class": "transfer", + "target": "Costco Visa Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2025-10-15#" + }, + { + "date": "20251014", + "amt": -63.0, + "desc": "ATM WITHDRAWAL MACPxx2261N1012 3 ATM WITHDRAWAL MACPxx2261N1", + "class": "transfer", + "target": "Cash", + "category": null, + "review": false, + "fitid": "952673929534609207#2#001#2025-10-14#" + }, + { + "date": "20251008", + "amt": 0.15, + "desc": "INTEREST PAYMENT INTEREST PAYMENT", + "class": "income", + "target": "Interest Income", + "category": "Investment: Interest", + "review": false, + "fitid": "952673929534609207#1#001#2025-10-08#" + }, + { + "date": "20251006", + "amt": 80.0, + "desc": "CASH APP*DANE SABO*CAS Oakland C CASH APP*DANE SABO*CAS Oakl", + "class": "dontknow", + "target": "Don't Know", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2025-10-06#" + }, + { + "date": "20251002", + "amt": -1025.0, + "desc": "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS AC", + "class": "expense", + "target": "Compeer Investments", + "category": "Rent", + "review": false, + "fitid": "952673929534609207#1#001#2025-10-02#" + }, + { + "date": "20251001", + "amt": 10.72, + "desc": "ZEL FROM Luis Benitez ZEL FROM Luis Benitez", + "class": "dontknow", + "target": "Don't Know", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2025-10-01#" + }, + { + "date": "20250930", + "amt": 2703.46, + "desc": "UNIV PITTSBURGH SALARY ACH CREDI UNIV PITTSBURGH SALARY ACH ", + "class": "income", + "target": "Pitt Salary", + "category": "Wages", + "review": false, + "fitid": "952673929534609207#1#001#2025-09-30#" + }, + { + "date": "20250915", + "amt": -107.31, + "desc": "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WE", + "class": "transfer", + "target": "Costco Visa Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2025-09-15#" + }, + { + "date": "20250909", + "amt": 0.19, + "desc": "INTEREST PAYMENT INTEREST PAYMENT", + "class": "income", + "target": "Interest Income", + "category": "Investment: Interest", + "review": false, + "fitid": "952673929534609207#1#001#2025-09-09#" + }, + { + "date": "20250908", + "amt": -130.0, + "desc": "PITT TUITION PITTPAYMNT ACH WEB PITT TUITION PITTPAYMNT ACH ", + "class": "expense", + "target": "University of Pittsburgh", + "category": "Education", + "review": false, + "fitid": "952673929534609207#1#001#2025-09-08#" + }, + { + "date": "20250903", + "amt": -75.45, + "desc": "DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH ", + "class": "expense", + "target": "Duquesne Light", + "category": "Utilities: Electric", + "review": false, + "fitid": "952673929534609207#2#001#2025-09-03#" + }, + { + "date": "20250903", + "amt": -1025.0, + "desc": "COMPEER-COMP-CP WEB PMTS ACH WEB COMPEER-COMP-CP WEB PMTS AC", + "class": "expense", + "target": "Compeer Investments", + "category": "Rent", + "review": false, + "fitid": "952673929534609207#1#001#2025-09-03#" + }, + { + "date": "20250902", + "amt": -200.0, + "desc": "ATM WITHDRAWAL PNCPJ6274 N0902 3 ATM WITHDRAWAL PNCPJ6274 N0", + "class": "transfer", + "target": "Cash", + "category": null, + "review": false, + "fitid": "952673929534609207#3#001#2025-09-02#" + }, + { + "date": "20250902", + "amt": -6923.08, + "desc": "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT AC", + "class": "transfer", + "target": "Apple Credit Card", + "category": null, + "review": false, + "fitid": "952673929534609207#2#001#2025-09-02#" + }, + { + "date": "20250902", + "amt": 200.0, + "desc": "ATM DEPOSIT xxxx2199 DEPOSIT 560 ATM DEPOSIT xxxx2199 DEPOSI", + "class": "review", + "target": "ATM deposit (source?)", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2025-09-02#" + }, + { + "date": "20250829", + "amt": 2703.46, + "desc": "UNIV PITTSBURGH SALARY ACH CREDI UNIV PITTSBURGH SALARY ACH ", + "class": "income", + "target": "Pitt Salary", + "category": "Wages", + "review": false, + "fitid": "952673929534609207#1#001#2025-08-29#" + }, + { + "date": "20250825", + "amt": -1100.0, + "desc": "WITHDRAWAL xxxxx8118 WITHDRAWAL xxxxx8118", + "class": "review", + "target": "Withdrawal (where?)", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2025-08-25#" + }, + { + "date": "20250819", + "amt": -50.0, + "desc": "CAPITAL ONE TRANSFER ACH WEB RT0 CAPITAL ONE TRANSFER ACH WE", + "class": "review", + "target": "Capital One?", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2025-08-19#" + }, + { + "date": "20250818", + "amt": 14.77, + "desc": "CAPITAL ONE TRANSFER ACH WEB PAY CAPITAL ONE TRANSFER ACH WE", + "class": "review", + "target": "Capital One?", + "category": null, + "review": true, + "fitid": "952673929534609207#2#001#2025-08-18#" + }, + { + "date": "20250818", + "amt": 2503.39, + "desc": "CAPITAL ONE TRANSFER ACH WEB PAY CAPITAL ONE TRANSFER ACH WE", + "class": "review", + "target": "Capital One?", + "category": null, + "review": true, + "fitid": "952673929534609207#1#001#2025-08-18#" + }, + { + "date": "20250815", + "amt": -2505.53, + "desc": "CITI AUTOPAY PAYMENT ACH WEB-REC CITI AUTOPAY PAYMENT ACH WE", + "class": "transfer", + "target": "Costco Visa Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2025-08-15#" + }, + { + "date": "20250811", + "amt": 22000.0, + "desc": "CARVANA PAYOUT CVNA x6542 CORPOR CARVANA PAYOUT CVNA x6542 C", + "class": "transfer", + "target": "Illiquid Assets", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2025-08-11#" + }, + { + "date": "20250808", + "amt": 0.04, + "desc": "INTEREST PAYMENT INTEREST PAYMENT", + "class": "income", + "target": "Interest Income", + "category": "Investment: Interest", + "review": false, + "fitid": "952673929534609207#1#001#2025-08-08#" + }, + { + "date": "20250806", + "amt": -47.39, + "desc": "DUQUESNE LIGHT PAYMENT ACH DEBIT DUQUESNE LIGHT PAYMENT ACH ", + "class": "expense", + "target": "Duquesne Light", + "category": "Utilities: Electric", + "review": false, + "fitid": "952673929534609207#1#001#2025-08-06#" + }, + { + "date": "20250804", + "amt": -1029.95, + "desc": "YSI*Compeer Investment 412-xxx57 YSI*Compeer Investment 412-", + "class": "expense", + "target": "Compeer Investments", + "category": "Rent", + "review": false, + "fitid": "952673929534609207#2#001#2025-08-04#" + }, + { + "date": "20250804", + "amt": 0.43, + "desc": "YARDI PENNY TEST ACCTVERIFY ACH YARDI PENNY TEST ACCTVERIFY ", + "class": "income", + "target": "Don't Know", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2025-08-04#" + }, + { + "date": "20250801", + "amt": -3218.03, + "desc": "APPLECARD GSBANK PAYMENT ACH WEB APPLECARD GSBANK PAYMENT AC", + "class": "transfer", + "target": "Apple Credit Card", + "category": null, + "review": false, + "fitid": "952673929534609207#1#001#2025-08-01#" + } +] \ No newline at end of file diff --git a/migration/rebuild_dryrun.py b/migration/rebuild_dryrun.py new file mode 100644 index 0000000..9c28c42 --- /dev/null +++ b/migration/rebuild_dryrun.py @@ -0,0 +1,86 @@ +"""Consolidated rebuild DRY-RUN (READ-ONLY). No Firefly writes. + +Goal: prove each account ties to its QFX ledger balance, so the wipe+reimport +is provably lossless before we run it. + +Method per account: opening_balance = ledger - sum(all that account's own QFX +lines). Card PAYMENT/AUTOPAY lines are posted as the receiving leg of a +PNC->card transfer (recorded once on the PNC side, so not double-counted). The +one orphan PNC->Apple payment (2025-08-01, Apple side pre-window) is netted +into Apple's opening balance so the tie still holds. +""" +import re, json +from collections import Counter, defaultdict + +D = "/Users/danesabo/Documents/Finances/EXPORTS/-MAY172026" +QFX = { + "PNC Checking": f"{D}/PNC7552Aug012025-May152025.QFX", + "Apple Credit Card": f"{D}/Apple Card Transactions Aug 01 2025 - May 17 2026.qfx", + "Costco Visa Card": f"{D}/CitiCostcoCard Aug012025-May172025.QFX", +} + +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")), + "type": g(b, "TRNTYPE").upper(), + "desc": (g(b, "NAME") + " " + g(b, "MEMO")).strip(), + "fitid": g(b, "FITID")}) + return ledger, out + +report = {} +recon = {} +for acct, path in QFX.items(): + ledger, txns = parse(path) + s = round(sum(t["amt"] for t in txns), 2) + opening = round(ledger - s, 2) + # classify counts + cls = Counter() + for t in txns: + if acct == "PNC Checking": + d = t["desc"].upper() + if "APPLECARD GSBANK PAYMENT" in d: cls["xfer->Apple"] += 1 + elif "CITI AUTOPAY PAYMENT" in d: cls["xfer->Costco"] += 1 + elif "SCHWAB BROKERAGE MONEYLINK" in d: cls["xfer<->Schwab"] += 1 + elif "ATM WITHDRAWAL" in d: cls["xfer->Cash"] += 1 + elif "CARVANA PAYOUT" in d: cls["xfer<-Illiquid"] += 1 + elif "ATM DEPOSIT" in d and abs(t["amt"]) > 10000: cls["xfer<-Coverdell"] += 1 + elif "CAPITAL ONE TRANSFER" in d: cls["xfer<->CapOne(closed)"] += 1 + elif "UNIV PITTSBURGH" in d: cls["income"] += 1 + elif "INTEREST PAYMENT" in d or "IRS TREAS" in d: cls["income"] += 1 + elif "DUQUESNE LIGHT" in d or "COMPEER" in d or "PITT TUITION" in d: cls["expense"] += 1 + elif any(k in d for k in ("VENMO","CASH APP","ZEL FROM","ATM SURCHARGE","YARDI")): cls["DontKnow"] += 1 + else: cls["review"] += 1 + else: # cards + if t["type"] == "PAYMENT" or (acct == "Costco Visa Card" and t["amt"] > 0 and "AUTOPAY" in t["desc"].upper()): + cls["payment(paired w/ PNC)"] += 1 + elif t["amt"] > 0: cls["refund(deposit)"] += 1 + else: cls["expense(via map)"] += 1 + report[acct] = {"ledger": ledger, "n": len(txns), "sum": s, + "opening": opening, "classes": dict(cls)} + recon[acct] = abs(opening + s - ledger) < 0.01 + +print("=" * 64) +print("PER-ACCOUNT RECONCILIATION (opening + Σtxns must == QFX ledger)") +print("=" * 64) +for acct, r in report.items(): + ok = "OK" if recon[acct] else "*** MISMATCH ***" + print(f"\n{acct}") + print(f" QFX ledger : ${r['ledger']:>12,.2f}") + print(f" Σ {r['n']:>3} txns : ${r['sum']:>12,.2f}") + print(f" => opening (Aug1): ${r['opening']:>12,.2f} tie: {ok}") + print(f" classes: {r['classes']}") + +print("\n" + "=" * 64) +print("NOTE: orphan PNC->Apple payment 2025-08-01 $3,218.03 (Apple side") +print("pre-window) -> net into Apple opening so Firefly ties to ledger.") +print("Investment accts (Schwab/Roth/Coverdell/Coinbase): opening + monthly") +print("valuation (Dane provides values at execute) + PNC-side transfers.") +print("Nothing written. Normalized dataset build is the next step.") diff --git a/migration/rebuild_pnc.py b/migration/rebuild_pnc.py new file mode 100644 index 0000000..ddaf50e --- /dev/null +++ b/migration/rebuild_pnc.py @@ -0,0 +1,98 @@ +"""PNC rebuild classifier + reconciliation (READ-ONLY, no Firefly writes). + +PNC is the hub account. Every PNC line stays a transaction of its own amount; +classification only decides the OTHER leg (transfer target / income / expense / +review / Don't Know). So PNC's own balance is unaffected by classification, +which gives us a hard integrity check: + + opening_balance(Aug 1) + sum(all PNC txns) == QFX LEDGERBAL + +If that holds, nothing was dropped or double-counted. Prints the derived +opening balance and a by-class breakdown for Dane to review before any wipe. +""" + +import re, json, sys + +F = "/Users/danesabo/Documents/Finances/EXPORTS/-MAY172026/PNC7552Aug012025-May152025.QFX" +t = open(F, encoding="latin-1", errors="replace").read() +m = re.search(r".*?([^<\r\n]*).*?([^<\r\n]*)", t, re.S | re.I) +ledger_bal, ledger_asof = float(m.group(1)), m.group(2)[:8] +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 "" + +def classify(desc, amt): + d = desc.upper() + # --- transfers (own accounts) --- + if "APPLECARD GSBANK PAYMENT" in d: + return "transfer", "Apple Credit Card", None, False + if "CITI AUTOPAY PAYMENT" in d: + return "transfer", "Costco Visa Card", None, False + if "SCHWAB BROKERAGE MONEYLINK" in d: + return "transfer", "Schwab (Stocks/Savings?)", None, True # review: which + if "ATM WITHDRAWAL" in d: + return "transfer", "Cash", None, False + if "CARVANA PAYOUT" in d: + return "transfer", "Illiquid Assets", None, False + if "ATM DEPOSIT" in d and abs(amt) > 10000: + return "transfer", "Coverdell", None, True # the ~$14,715 check + # --- income --- + if "UNIV PITTSBURGH" in d and ("PAYROLL" in d or "SALARY" in d): + return "income", "Pitt Salary", "Wages", False + if "INTEREST PAYMENT" in d: + return "income", "Interest Income", "Investment: Interest", False + if "IRS TREAS 310" in d: + return "income", "IRS Refund", "Taxes", False + if "ATM SURCHARGE REIMB" in d: + return "income", "Don't Know", None, False + # --- expenses --- + if "DUQUESNE LIGHT" in d: + return "expense", "Duquesne Light", "Utilities: Electric", False + if "COMPEER" in d: + return "expense", "Compeer Investments", "Rent", False + if "PITT TUITION" in d: + return "expense", "University of Pittsburgh", "Education", False + # --- Don't Know (poker / ambiguous money movement) --- + if any(k in d for k in ("VENMO CASHOUT", "CASH APP", "ZEL FROM")): + return "dontknow", "Don't Know", None, True + # --- review individually --- + if re.search(r"\bCHECK \d+", d): + return "review", "CHECK (payee?)", None, True + if "CAPITAL ONE TRANSFER" in d: + return "review", "Capital One?", None, True + if "ATM DEPOSIT" in d: + return "review", "ATM deposit (source?)", None, True + if "WITHDRAWAL" in d: + return "review", "Withdrawal (where?)", None, True + if "YARDI PENNY TEST" in d: + return "income", "Don't Know", None, False + return "review", "UNCLASSIFIED", None, True + +recs, total = [], 0.0 +from collections import Counter, defaultdict +by_class = Counter(); by_class_amt = defaultdict(float) +for b in blocks: + amt = float(g(b, "TRNAMT")); total += amt + desc = (g(b, "NAME") + " " + g(b, "MEMO")).strip() + cls, target, cat, review = classify(desc, amt) + by_class[cls] += 1; by_class_amt[cls] += amt + recs.append({"date": g(b, "DTPOSTED")[:8], "amt": amt, "desc": desc[:60], + "class": cls, "target": target, "category": cat, + "review": review, "fitid": g(b, "FITID")}) + +opening = round(ledger_bal - total, 2) +print(f"PNC QFX: {len(blocks)} txns | LEDGERBAL ${ledger_bal:,.2f} as of {ledger_asof}") +print(f"sum(txns) = ${total:,.2f}") +print(f"=> DERIVED OPENING BALANCE (pre 2025-08-01) = ${opening:,.2f}") +print(f" reconciliation: {opening:,.2f} + {total:,.2f} = {opening+total:,.2f} " + f"(== ledger {ledger_bal:,.2f}? {abs(opening+total-ledger_bal)<0.01})") +print("\nBY CLASS:") +for c in ("transfer","income","expense","dontknow","review"): + print(f" {c:9} n={by_class[c]:>3} net=${by_class_amt[c]:>12,.2f}") +print("\nNEEDS-DANE (review / Don't Know):") +for r in recs: + if r["review"]: + print(f" {r['date']} {r['amt']:>10,.2f} [{r['class']}->{r['target']}] {r['desc']}") +json.dump(recs, open("/tmp/pnc_classified.json","w"), indent=1) +print("\nwrote /tmp/pnc_classified.json (read-only; nothing posted)")