SahilGoel's picture
Upload README.md with huggingface_hub
4bf4772 verified
|
Raw
History Blame Contribute Delete
4.15 kB
---
language: en
license: mit
library_name: transformers
tags:
- finance
- banking
- indian
- upi
- transaction-classification
- qwen
- fine-tuned
base_model: Qwen/Qwen2.5-0.5B
widget:
- text: "### System:\nYou are a bank transaction classifier for Indian bank statements. Given a raw transaction description, infer both its category and the actual company when evidence exists. Respond with ONLY a JSON object: {\"category\": \"<category>\", \"company_name\": \"<company_or_null>\", \"is_income\": false, \"confidence\": 0.0}.\n\n### Input:\nUPI/zerodhabroking@/HDFC BANK LTD\n\n### Output:\n"
example_title: "UPI — Zerodha"
- text: "### System:\nYou are a bank transaction classifier for Indian bank statements. Given a raw transaction description, infer both its category and the actual company when evidence exists. Respond with ONLY a JSON object: {\"category\": \"<category>\", \"company_name\": \"<company_or_null>\", \"is_income\": false, \"confidence\": 0.0}.\n\n### Input:\nNEFT/SALARY/ACME CORP\n\n### Output:\n"
example_title: "NEFT — Salary"
---
# Indian Transaction Classifier
Fine-tuned Qwen2.5-0.5B for classifying Indian bank transactions (UPI, NEFT, IMPS, RTGS) into 30+ categories with merchant identification.
## ⚡ Try it now (Inference API — free, no setup)
Use the **Inference API** widget on the right side of this page. Type a transaction description in the text box and click Compute.
Or call it programmatically:
```python
from huggingface_hub import InferenceClient
client = InferenceClient(model="SahilGoel/indian-txn-classifier")
system_prompt = 'You are a bank transaction classifier for Indian bank statements. Given a raw transaction description, infer both its category and the actual company when evidence exists. Respond with ONLY a JSON object: {"category": "<category>", "company_name": "<company_or_null>", "is_income": false, "confidence": 0.0}.'
tx = "UPI/zerodhabroking@/HDFC BANK LTD"
prompt = f"### System:\n{system_prompt}\n\n### Input:\n{tx}\n\n### Output:\n"
result = client.text_generation(prompt, max_new_tokens=100, temperature=0.1)
print(result)
# {"category": "trading_deposit", "company_name": "Zerodha", "is_income": false, "confidence": 0.95}
```
## Categories
**Income:** salary, dividend, interest, rental, capital_gains, other_income
**Expenses:** food, grocery, shopping, bills, medical, insurance, tax_payment, credit_card, personal_transfer, investment, trading_deposit, trading_credit, education, travel, entertainment, donation, loan_emi, loan_repayment, cash_withdrawal
**Special:** friends, family, flat_deposit, trading_fees, vehicle_purchase, staff_salary, health_fitness, transfer, unclassified
## Pipeline Architecture
1. **Rule engine** (70-80% coverage) — regex patterns for known merchants and UPI handles
2. **Recurring pattern detector** (10% more) — identifies repeating transactions
3. **Fine-tuned Qwen 0.5B** (remaining) — LLM fallback for uncertain transactions
## Run locally
```bash
pip install transformers torch
```
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("SahilGoel/indian-txn-classifier")
tokenizer = AutoTokenizer.from_pretrained("SahilGoel/indian-txn-classifier")
system_prompt = "You are a bank transaction classifier for Indian bank statements..."
input_text = "UPI/swiggybengaluru@/HDFC BANK LTD"
prompt = f"### System:\n{system_prompt}\n\n### Input:\n{input_text}\n\n### Output:\n"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=100, temperature=0.1, do_sample=False)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```
## Run on Google Colab (free GPU)
Open `app.py` from the GitHub repo in a Colab notebook — it works as a Gradio app with a public share link.
## Supported Banks
ICICI, HDFC, SBI, Axis, Kotak, Yes Bank, Federal Bank, IDFC First, IndusInd, Bank of Baroda, Punjab National, Canara, Union Bank, Unity SFB
## GitHub
Code and training pipeline: [the-great-one/indian-txn-classifier](https://github.com/The-Great-One/indian-txn-classifier)