EHTB’s ERP classifier assigns invoice lines to general-ledger accounts, the bookkeeping categories used to record spending. This local Jev-like demo trains its own model; its inference code uses multilingual DistilBERT and custom layers, without calling TypeSafe Jev.
Hold the description fixed and change the price
The demo’s accounting rule expenses IT hardware below €800 and capitalizes it at or above that amount. Its model reads description, department and amount through separate branches, then combines them to choose an account.
A text classifier can exploit descriptions that sound cheap or premium. EHTB therefore tests repeated copies of each IT description while changing only the amount.
- The authors report 97.4% ordinary test accuracy for one configuration without counterfactual training, but 15.4% error in where its price response crosses the boundary.
- Adding rule-labeled copies on both sides of the boundary brings the default’s reported crossing error to 0.5%.
- The rule supplies those training labels. This teaches a known policy; it does not discover an unknown accounting threshold.
Compare against the cheap baseline
The authors report 98.8% ± 0.9% accuracy across training seeds on a fixed synthetic test set. Their simpler text-plus-binned-amount baseline reaches 96.5%. They acknowledge that the small test set cannot reliably rank such close results.
The saved default confusion matrix contains 138 correct answers out of 141. Local arithmetic checks matched that result and its saved confidence interval. Recorded product-group IDs also remain separate across training, validation and test data.
Those checks establish internal consistency. They do not reproduce the trained model’s predictions or validate the synthetic labels.
A review cutoff needs its own evidence
The saved results report 134 of 141 test lines accepted without errors at the CLI’s 0.90 confidence cutoff. The evaluation’s validation-selected cutoff is 0.40, which accepts every test line, including the errors.
- Treat the CLI cutoff and the validation-selected policy as separate results.
- The synthetic generator leaks price tier through wording and filters ambiguous records before splitting.
- The amount encoder uses increasing ramps, but later layers provide no guarantee that the final response always increases.
- A valid account code and a high score still need correctness checks on real invoices.
A category classifier followed by an explicit monetary rule remains a strong comparison. Exact policy boundaries are straightforward to keep in code.
Verification: inspected the model, dataset builder, baseline and evaluation code. Executed deterministic rule and saved-artifact checks; no neural training, inference or head-to-head Jev benchmark was run. Performance figures above are the repository’s claims.