Your support inbox, sorted before anyone reads it
Sort an inbox of eight customer messages in one click, then write your own in any of ten languages. A small model in your browser names the department, the request and the mood.
The demo needs JavaScript. The model is a 55 MB download, once; your browser keeps it.
27 request types in 11 departments of an online shop; anything else comes back as unrelated, and under 50% the model says it is not sure. Ten languages, typos welcome.
96% vs 87%Of 160 hand-written customer messages routed to the right request; an open LLM 150× larger got 87%.
Never leaves your systemsCustomer text is classified on your own server or in the browser.
Under 2 hoursPer million messages on an ordinary server. No per-message bill.
How it works
DataBitext customer-support requests (English), machine-translated into nine more languages, plus a “not a request” class learnt from Wikipedia and Tatoeba sentences. Training rows are wrapped into realistic messages: greeting, order number, sign-off.
ModelThe first 16 of mmBERT-small's 22 layers, fine-tuned to classify 27 request types: 52 MB of weights plus a 3 MB vocabulary for ten languages. The 160 hand-written test messages come from the same author as the training messages, so 96% is an upper bound; on 10,000 held-out Bitext requests it scores 99%, the LLM 73%.
RuntimeONNX + transformers.js, WebGPU or WASM. The same model runs on a CPU server in a few milliseconds per message.
Cost and speedOn four CPU threads the model takes 5.7 ms per message, 1.6 hours per million. The open LLM is Qwen 2.5 7B, given only the list of request types. A hosted LLM at list price would cost about $35 per million such messages (an estimate from measured prompt lengths), billed for every message, with the text sent outside your systems.
Code, configs and the full benchmark: github.com/balticml/support-triage. Weights: huggingface.co/balticml/mmbert-small-support-triage. Want this on your inbox, with your departments? Get in touch