FinnAI SLM v2

On-device model for Indian bank SMS β†’ JSON and personal finance Q&A.

Useful when you want structured spends from bank SMS on the phone, without uploading messages to a cloud LLM.

Model finndot/finnai-slm-v2
Dataset finndot/finnai-slm-data
Base Qwen/Qwen3-1.7B
License Apache 2.0
App FinnDot

FinnAI model family

Prefer v4 for new projects.

What it helps with

Capability How it helps
SMS β†’ JSON Extracts amount, merchant, type, account, balance, category from Indian bank SMS
Noise refusal Returns {} for OTP / promo / KYC instead of inventing spends
Finance coach Short answers about spending, SIP, EMI, budgeting
Privacy Designed for on-device expense tracking (FinnDot)

Quick start

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "finndot/finnai-slm-v2"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id, torch_dtype="bfloat16", device_map="auto"
)

messages = [
    {"role": "system", "content": "Extract transaction details from this SMS as JSON: {amount, merchant, type, account, balance, category}. type is one of: INCOME, EXPENSE, CREDIT, TRANSFER, INVESTMENT. If this is not a transaction (OTP, promo, KYC), return {}."},
    {"role": "user", "content": "HDFC Bank: Rs.499.00 debited from A/c XX1234 to SWIGGY via UPI. Avl Bal Rs.15000.50"}
]
text = tokenizer.apply_chat_template(
    messages, tokenize=False, add_generation_prompt=True, enable_thinking=False
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=256, do_sample=False)
print(tokenizer.decode(output[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))

Quality snapshot

Metric FinnAI v2 Untuned Qwen3-1.7B
Strict R-EM % 97.97 ~28
Amount EM % 99.53 high but over-parses noise
JSON valid % 100.0 β€”

Limitations

  • Indian bank SMS focus; may not fit US/EU formats well
  • Merchant field is hardest; regex parsers can still win on supported banks
  • Smaller than general assistants β€” built for SMS + short finance chat

Citation

@misc{finnai-slm-v2,
  title={FinnAI SLM: On-device Indian bank SMS parsing},
  author={FinnDot Team},
  year={2026},
  url={https://huggingface.co/finndot/finnai-slm-v2}
}

License

Apache 2.0 β€” same as Qwen3-1.7B.

Downloads last month
571
Safetensors
Model size
2B params
Tensor type
BF16
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for finndot/finnai-slm-v2

Finetuned
Qwen/Qwen3-1.7B
Finetuned
(1349)
this model

Dataset used to train finndot/finnai-slm-v2

Evaluation results

  • Strict Record Exact-Match (R-EM) on FinnAI SMS test (synthetic)
    self-reported
    97.970
  • Amount Exact-Match on FinnAI SMS test (synthetic)
    self-reported
    99.530
  • JSON Validity on FinnAI SMS test (synthetic)
    self-reported
    100.000