FunctionGemma Bank SMS Parser

A fine-tuned FunctionGemma-270M-IT model for extracting structured transaction data from bank SMS messages.

Model Description

This model is trained to perform two functions:

  1. extract_transaction - Parse banking SMS and extract structured fields:

    • source: Bank or sender name
    • currency: Currency code (INR, USD, etc.)
    • amount: Transaction amount (number)
    • date: Transaction date
    • destination: Recipient or merchant
    • type: "debit" or "credit"
  2. skip_message - Identify non-transaction messages:

    • OTPs and verification codes
    • Promotional messages
    • Payment requests (not completed transactions)
    • Account alerts without transactions

Quantization Options

File Quantization Size Description
functiongemma-270m-bank-sms-parser-Q4_K_M.gguf Q4_K_M ~242MB Recommended - Best size/quality tradeoff
functiongemma-270m-bank-sms-parser-Q5_K_M.gguf Q5_K_M ~248MB Higher quality if Q4 shows issues
functiongemma-270m-bank-sms-parser-Q8_0.gguf Q8_0 ~280MB Near-lossless, for validation

Usage

With llama.cpp server

# Download model
huggingface-cli download kartikaybagla/functiongemma-bank-sms-parser \
    functiongemma-270m-bank-sms-parser-Q4_K_M.gguf \
    --local-dir ./models

# Run server
llama-server --model ./models/functiongemma-270m-bank-sms-parser-Q4_K_M.gguf \
    --host 0.0.0.0 --port 8080 --ctx-size 2048

With Docker

docker run -p 8080:8080 -v ./models:/models \
    ghcr.io/ggml-org/llama.cpp:server \
    --model /models/functiongemma-270m-bank-sms-parser-Q4_K_M.gguf \
    --host 0.0.0.0 --port 8080

API Request

curl http://localhost:8080/v1/completions \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "<bos><start_of_turn>developer\nYou are a financial transaction extractor. Analyze SMS messages and:\n1. If the message describes a completed financial transaction (money sent, received, debited, or credited), use extract_transaction to capture the details.\n2. If the message is not a transaction (OTP, promotional, application status, payment request, etc.), use skip_message.\n\nOnly extract actual completed transactions with concrete amounts, not payment requests or pending transactions.<start_function_declaration>declaration:extract_transaction{description:<escape>Extract transaction details from a banking SMS message<escape>,parameters:{properties:{source:{type:<escape>STRING<escape>},currency:{type:<escape>STRING<escape>},amount:{type:<escape>NUMBER<escape>},date:{type:<escape>STRING<escape>},destination:{type:<escape>STRING<escape>},type:{type:<escape>STRING<escape>}},required:[<escape>source<escape>,<escape>currency<escape>,<escape>amount<escape>,<escape>date<escape>,<escape>destination<escape>,<escape>type<escape>],type:<escape>OBJECT<escape>}}<end_function_declaration><start_function_declaration>declaration:skip_message{description:<escape>Skip messages that are not financial transactions<escape>,parameters:{properties:{reason:{type:<escape>STRING<escape>}},required:[<escape>reason<escape>],type:<escape>OBJECT<escape>}}<end_function_declaration><end_of_turn>\n<start_of_turn>user\nICICI Bank Acct XX123 debited Rs 450.00 on 15-Jan-25; UPI to SWIGGY. UPI Ref: 123456789012<end_of_turn>\n<start_of_turn>model\n",
    "max_tokens": 200,
    "stop": ["<end_function_call>"]
  }'

Example Output

Input SMS:

ICICI Bank Acct XX123 debited Rs 450.00 on 15-Jan-25; UPI to SWIGGY. UPI Ref: 123456789012

Model Output:

<start_function_call>extract_transaction{"source": "ICICI Bank", "currency": "INR", "amount": 450.00, "date": "15-Jan-25", "destination": "SWIGGY", "type": "debit"}<end_function_call>

Input SMS (non-transaction):

Your OTP for login is 482910. Valid for 5 minutes. Do not share.

Model Output:

<start_function_call>skip_message{"reason": "OTP verification code"}<end_function_call>

Training

  • Base Model: google/functiongemma-270m-it
  • Training Framework: Hugging Face TRL (SFTTrainer)
  • Training Data: Classified bank SMS messages from Indian banks
  • Fine-tuning Method: LoRA

Intended Use

This model is designed for:

  • Personal finance automation
  • Importing transactions into budgeting apps (e.g., Actual Budget)
  • SMS-based expense tracking

Limitations

  • Primarily trained on Indian bank SMS formats (ICICI, HDFC, SBI, etc.)
  • May not generalize well to banks from other countries
  • Requires the specific prompt format shown above
  • Not suitable for security-critical applications without additional validation

License

This model inherits the Gemma license from the base model.

Links

Downloads last month
72
GGUF
Model size
0.3B params
Architecture
gemma3
Hardware compatibility
Log In to view the estimation

4-bit

5-bit

8-bit

16-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for kartikaybagla/functiongemma-bank-sms-parser

Quantized
(25)
this model