FinnAI SLM v4

On-device language model for Indian bank SMS → JSON and personal finance coaching.

Use this model when you need private, phone-friendly understanding of Indian banking SMS and short finance answers — without sending user messages to the cloud.

FinnAI model family

Prefer v4 for new apps and fine-tunes: broader SMS coverage, Ask / Learn / Analytics chat aligned with FinnDot.

What it helps with

Capability How it helps
SMS → JSON Turns UPI / NEFT / IMPS / card / salary / ATM SMS into {amount, merchant, type, account, balance, category}
Noise refusal Returns {} for OTP, promo, KYC — avoids fake transactions
Ask Short answers grounded in a spending ledger
Learn Tutor-style explanations (SIP, EMI, tax, budgeting)
Analytics Spending tips without inventing numbers
On-device INT4 LiteRT build runs on Android; user SMS stays on the phone

Languages: English, Hindi, Hinglish, and other Indic bank SMS styles in the training mix.

Quick start

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "finndot/finnai-slm-v4"
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)
out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))

LoRA adapter: adapter/ in this repo (base: finndot/finnai-slm-v3).

Quality snapshot (held-out test)

Metric FinnAI v4 Untuned Qwen3-1.7B
SMS R-EM % 94.87 29.39
Amount EM % 99.7 78.75
JSON valid % 100.0 100.0
Chat groundedness % 80.77 47.44

Full report: eval/v20261005-finnai-slm-v4.md.

On-device file

For Android / LiteRT-LM, use finndot/finnai-slm-v4-litertlm (~929 MB .litertlm).

Limitations

  • Best on Indian banking SMS; weaker on unfamiliar foreign formats.
  • Merchant names can still be hard; bank-specific regex parsers may win when available.
  • 1.7B — specialized for SMS + finance chat, not a general assistant.
  • Thinking / long chain-of-thought is disabled for on-device use.

Citation

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

License

Apache 2.0 — same as Qwen3-1.7B.

Downloads last month
649
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-v4

Finetuned
Qwen/Qwen3-1.7B
Finetuned
(1357)
this model
Adapters
1 model
Finetunes
2 models

Dataset used to train finndot/finnai-slm-v4

Evaluation results

  • Strict Record Exact-Match (R-EM) on FinnAI v4 SMS test (synthetic, 2028)
    self-reported
    94.870
  • Amount Exact-Match on FinnAI v4 SMS test (synthetic, 2028)
    self-reported
    99.700
  • JSON Validity on FinnAI v4 SMS test (synthetic, 2028)
    self-reported
    100.000