The Latest AIs, every day
AIs with the most favorites on Toolify
AIs with the highest website traffic (monthly visits)
AI Tools by Apps
Discover the Discord of AI
AI Tools by browser extensions
GPTs from GPT Store
Discover The Best Model For AI
Top AI lists by month and monthly visits.
Top AI lists by category and monthly visits.
Top AI lists by region and monthly visits.
Top AI lists by source and monthly visits.
Top AI lists by revenue and real traffic.

A fine-tuned DistilBERT model that classifies US bank transaction descriptions into 17 spending categories. Uses a
[debit]
/
[credit]
sign prefix to disambiguate transaction direction — a payroll deposit and a Venmo payment look similar in text but mean opposite things financially.
Successor to v1 , which classified on description text alone. v2 adds sign-aware input, expanded merchant coverage (500+), multi-format training across 8 bank statement structures, and PayPal as a first-class format.
The model takes a sign prefix + transaction description and outputs one of 17 categories:
Input: "[debit] STARBUCKS #1234 SAN FRANCISCO CA"
Output: Restaurants (0.99)
Input: "[credit] Patelco CU PAYROLL PPD ID: 321076470"
Output: Income (1.00)
Input: "[debit] CHASE CREDIT CRD AUTOPAY PPD ID: 4760039224"
Output: Transfer (1.00)
Input: "[debit] PreApproved Payment Bill User Payment: Netflix"
Output: Subscription (1.00)
The sign prefix encodes the transaction direction from the cardholder's perspective:
[debit]
— money left the account (purchases, payments out, fees)
[credit]
— money entered the account (income, refunds, payments received)
This is critical for distinguishing Income from Transfer.
[credit] VENMO CASHOUT
is Income (money arriving).
[debit] VENMO PAYMENT TO JOHN SMITH
is Transfer (money leaving). The description alone can't tell you which.
| Category | What it covers |
|---|---|
| Restaurants | Fast food, sit-down, coffee, delivery, POS systems (TST*, SQ*, CLV*) |
| Groceries | Supermarkets, warehouse clubs, farmers markets, convenience stores |
| Shopping | Retail, online, department stores, pet stores, liquor stores, e-commerce marketplaces |
| Transportation | Gas, EV charging, rideshare, auto service, parking, tolls, DMV |
| Entertainment | Movies, events, gaming, gambling/sportsbooks |
| Utilities | Electric, internet, phone, water, waste/trash, solar |
| Subscription | Streaming, SaaS, AI tools, VPNs, social media premium, dating, business SaaS |
| Healthcare | Pharmacy, doctor, dentist, telehealth, vision, hospital |
| Insurance | Auto, home, health, life, home warranty |
| Mortgage | Bank, credit union, and fintech mortgage payments, escrow, principal |
| Rent | Property management companies, lease payments |
| Travel | Hotels, airlines, car rental, cruise lines, airport services |
| Education | Online courses, tutoring, books, tuition, certification |
| Personal Care | Salon, gym, beauty, spa, barber |
| Transfer | CC autopay, P2P sends, bank transfers, brokerage sweeps, fintech, BNPL, wire, ATM, cashier's checks |
| Income | Payroll, direct deposit, interest, refunds, government benefits, gig economy payouts |
| Fees | Bank fees, late fees, ATM surcharges, service charges |
If you know the account type, some categories can be assigned without the model:
| Account Type | Category |
|---|---|
| Mortgage | Mortgage |
| Auto Loan | Transportation |
| Student Loan | Education |
| Personal Loan | Transfer |
| HELOC | Transfer |
| CD | Income |
For checking, savings, and credit card accounts, use the model.
Model: DistilBERT-base-uncased + LoRA (r=32, alpha=64)
Dataset: 68,000 synthetic samples (4,000 per category)
Trainable: 1.8M / 68.7M parameters (2.6%)
Training: 20 epochs, best at epoch 16
Validation: 99.9% accuracy (15 of 17 categories at 100%)
The model is trained on 8 bank statement formats so it classifies correctly regardless of which bank produced the description:
| Format | Example | Source |
|---|---|---|
| Chase merchant |
STARBUCKS #1234
|
Chase credit cards |
| Chase ACH |
INSTITUTION PURPOSE PPD ID: CODE
|
Chase checking |
| Apple Card |
MERCHANT ADDRESS CITY ZIP STATE USA
|
Apple Card |
| PayPal native |
PreApproved Payment Bill User Payment: MERCHANT
|
PayPal credit card |
| PayPal prefix |
PP*MERCHANT
,
PYPL*MERCHANT
,
PAYPAL *MERCHANT
|
Chase/other banks |
| Capital One |
Withdrawal from MERCHANT
,
Preauthorized Deposit from MERCHANT
|
Capital One |
| Mercury |
MERCHANT; Description
or just
MERCHANT
|
Mercury, neobanks |
| POS prefix |
SQ *MERCHANT
,
TST*MERCHANT
,
CLV*MERCHANT
|
Square, Toast, Clover |
PayPal formats appear across all spending categories at meaningful rates, reflecting that people use PayPal cards at any merchant.
The 99.9% validation accuracy is on synthetic data. On ~2,000 real transactions:
from transformers import pipeline
classifier = pipeline("text-classification", model="DoDataThings/distilbert-us-transaction-classifier-v2")
# Sign prefix required
result = classifier("[debit] STARBUCKS #1234 SAN FRANCISCO CA")
print(result) # [{'label': 'Restaurants', 'score': 0.99}]
# Sign matters for ambiguous transactions
classifier("[credit] VENMO CASHOUT PPD ID: 12345678")
# [{'label': 'Income', 'score': 0.95}]
classifier("[debit] VENMO PAYMENT TO JOHN SMITH")
# [{'label': 'Transfer', 'score': 0.97}]
# Works across all bank formats
classifier("[debit] PreApproved Payment Bill User Payment: Netflix")
# [{'label': 'Subscription', 'score': 1.00}]
classifier("[debit] PP*SAFEWAY")
# [{'label': 'Groceries', 'score': 1.00}]
const { pipeline } = require('@xenova/transformers');
const classifier = await pipeline(
'text-classification',
'DoDataThings/distilbert-us-transaction-classifier-v2'
);
const result = await classifier('[debit] STARBUCKS #1234');
// [{ label: 'Restaurants', score: 0.99 }]
An ONNX export is included in the
onnx/
subdirectory.
The dataset is published at
DoDataThings/us-bank-transaction-categories-v2
.
The synthetic data generator is open source:
node scripts/generate-training-data.js --count 4000 # 4,000 per category
Available at github.com/wnstnb/foliome .
[debit]
/
[credit]
will degrade accuracy
Apache 2.0
distilbert-us-transaction-classifier-v2 huggingface.co is an AI model on huggingface.co that provides distilbert-us-transaction-classifier-v2's model effect (), which can be used instantly with this DoDataThings distilbert-us-transaction-classifier-v2 model. huggingface.co supports a free trial of the distilbert-us-transaction-classifier-v2 model, and also provides paid use of the distilbert-us-transaction-classifier-v2. Support call distilbert-us-transaction-classifier-v2 model through api, including Node.js, Python, http.
distilbert-us-transaction-classifier-v2 huggingface.co is an online trial and call api platform, which integrates distilbert-us-transaction-classifier-v2's modeling effects, including api services, and provides a free online trial of distilbert-us-transaction-classifier-v2, you can try distilbert-us-transaction-classifier-v2 online for free by clicking the link below.
distilbert-us-transaction-classifier-v2 is an open source model from GitHub that offers a free installation service, and any user can find distilbert-us-transaction-classifier-v2 on GitHub to install. At the same time, huggingface.co provides the effect of distilbert-us-transaction-classifier-v2 install, users can directly use distilbert-us-transaction-classifier-v2 installed effect in huggingface.co for debugging and trial. It also supports api for free installation.
