MiniCPM5-1B — Indian FMCG Product Name Normalizer

Fine-tuned openbmb/MiniCPM5-1B to normalize inconsistent Indian FMCG product names from distributor invoices into canonical SKU names. Part of the Kirana Detective project — an AI system for small Indian grocery stores to reconcile purchase invoices against a master product catalog.

Model Description

Indian kirana (grocery) distributors write product names in highly inconsistent shorthand on invoices: abbreviations, typos, mixed case, regional variants, and truncated descriptions. This model maps any such raw string to a clean, canonical product name that can be matched against a standardized catalog.

Example inputs → outputs:

Raw Invoice Name Normalized Output
MAGGI NDL 70GM Nestle Maggi Masala Noodles 70g
SURF XL 1K Surf Excel Washing Powder 1kg
PARLEG 80 Parle-G Biscuit 80g
COLGAT 100G Colgate Strong Teeth Toothpaste 100g
AMUL BTR 100 Amul Butter 100g
BRIT MARIE LT Britannia Marie Light Biscuit

How to Use

With llama.cpp

llama-cli --model MiniCPM5-1B.Q4_K_M.gguf \
  -p "<|im_start|>system\nYou are an Indian FMCG product name normalizer. Given a raw product name from a distributor invoice, return ONLY the canonical product name. No explanation, no punctuation — just the canonical name.<|im_end|>\n<|im_start|>user\nInvoice product name: \"MAGGI NDL 70GM\"<|im_end|>\n<|im_start|>assistant\n"

With Python (transformers)

from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("build-small-hackathon/minicpm5-1b-indian-fmcg-normalizer")
model = AutoModelForCausalLM.from_pretrained("build-small-hackathon/minicpm5-1b-indian-fmcg-normalizer")

messages = [
    {"role": "system", "content": "You are an Indian FMCG product name normalizer. Given a raw product name from a distributor invoice, return ONLY the canonical product name. No explanation, no punctuation — just the canonical name."},
    {"role": "user", "content": 'Invoice product name: "MAGGI NDL 70GM"'},
]

text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=32)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
# → Nestle Maggi Masala Noodles 70g

Training Details

Dataset

  • Size: 2,000 synthetic (raw, canonical) pairs covering ~200 Indian FMCG SKUs
  • Train / Eval split: 1,800 / 200 (90 / 10)
  • Generation method: Rule-based augmentation of a hand-curated catalog — abbreviation expansion, typo injection, random truncation, and regional shorthand patterns
  • Format: Chat template (system + user + assistant turns)

Hyperparameters

Parameter Value
Method QLoRA (4-bit base + LoRA adapters)
LoRA rank 16
LoRA alpha 16
LoRA target modules q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
Trainable parameters 11,206,656 / 1,091,839,488 (1.03%)
Epochs 3
Total steps 339
Batch size per device 8
Gradient accumulation steps 2
Effective batch size 16
Learning rate 2e-4
LR scheduler Cosine
Max sequence length 512
Precision BF16

Training Infrastructure

Field Value
Hardware NVIDIA A10G (22 GB VRAM)
Framework Unsloth 2026.6.1
Orchestration Modal
Training time ~3 minutes
Train loss 0.5834
Throughput 2.14 steps/sec · 34.2 samples/sec

Quantization

The published file is MiniCPM5-1B.Q4_K_M.gguf (~688 MB), quantized from BF16 using llama.cpp Q4_K_M.

Limitations

  • Trained on synthetic data only — real-world invoice noise may differ from the patterns simulated during generation
  • Covers ~200 Indian FMCG SKUs; performance on out-of-catalog or regional/private-label products is untested
  • Output is a direct string match; post-processing fuzzy matching against a catalog index is recommended in production

Citation

@misc{kirana-detective-2026,
  title  = {Kirana Detective: AI Invoice Reconciliation for Indian Grocery Stores},
  author = {Syed Naazim hussain},
  year   = {2026},
  url    = {https://huggingface.co/build-small-hackathon/minicpm5-1b-indian-fmcg-normalizer}
}
Downloads last month
32
GGUF
Model size
1B params
Architecture
llama
Hardware compatibility
Log In to add your hardware

4-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for build-small-hackathon/minicpm5-1b-indian-fmcg-normalizer

Quantized
(55)
this model

Space using build-small-hackathon/minicpm5-1b-indian-fmcg-normalizer 1

Collection including build-small-hackathon/minicpm5-1b-indian-fmcg-normalizer

Article mentioning build-small-hackathon/minicpm5-1b-indian-fmcg-normalizer