--- license: mit tags: - coreml - text-classification - finance - belgium --- # BelgoClassifier — Belgian bank-transaction categorizer (Core ML) **⚠️ Archive channel.** This repository is a public archive of the Stay Steady app's on-device transaction classifier. The app itself distributes models via its own backend — files here are for reference and research, not consumed by any released app. ## Current model: v4.6.1 (2026-07-20) `BelgoClassifier_v4.6.1.mlmodelc.zip` — classifier head over **Apple NLEmbedding sentence embeddings (512-dim, English)**. 34 spending categories. Trained on 21,565 samples: synthetic Belgian transaction text plus manually audited real bank transactions (personal/P2P counterparties excluded, merchant names canonicalized — branch towns, store numbers and card fragments stripped). Training accuracy 99.38%. **Runtime contract:** embed input text with `NLEmbedding.sentenceEmbedding(for: .english)` (512-dim), UPPERCASE, diacritics folded, merchant canonicalized. Input tensor `embeddings` `[1, 512] Float32`; output `probabilities` over 34 classes. ## ⚠️ v4.5.0 is defective — do not use `BelgoClassifier_v4.5.0.mlmodelc.zip` has been **removed** from this repository. It was trained by a different pipeline against `all-MiniLM-L6-v2` embeddings (**384-dim**) and therefore cannot score NLEmbedding vectors at all; it also measured only 86.7% validation accuracy and carried a merchant+location labeling bias. If you have a cached copy, discard it. ## Version history | Version | Embeddings | Notes | |---|---|---| | 4.6.1 | NLEmbedding 512 | Audited real data, canonicalized merchants — current | | ~~4.5.0~~ | MiniLM 384 | **Defective, removed** (wrong pipeline, 86.7%) | | 2.2.0 | NLEmbedding 512 | First NLEmbedding retrain | | 2.1.0 / 1.0.0 | — | Early iterations, archive only |