| --- |
| 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 | |
|
|