Downloads · 30 days
17
21% of all-time downloads
KhiemGOM/techjam-route-classifier
techjam-route-classifier is a text classification model from KhiemGOM. Use it when you need a label for a piece of text. The card lists the license as apache-2.0.
A six-way dialogue-act classifier used as Node 1 of a conversational e-commerce search agent. It reads what a customer means by a turn when the wording is unfamiliar, so the agent can manage state correctly.
Downloads · 30 days
17
21% of all-time downloads
All-time downloads
82
Public
Parameters
67M
268 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors268 MB · 100%
From the Hugging Face model README
A six-way dialogue-act classifier used as Node 1 of a conversational e-commerce search agent. It reads what a customer means by a turn when the wording is unfamiliar, so the agent can manage state correctly.
This is a small, narrow, task-specific encoder. It does not retrieve products, rank them, or generate text.
The agent it belongs to has a literal recognition gate that matches the message shapes its simulator emits. That gate is a detector, not a router: it reports that a message is unfamiliar, and cannot say what the message means. Two behaviours depend on the meaning:
override_update / override_opening — the customer changed their mind, so the
rejection set must be cleared. Failing to clear it keeps excluding products dismissed
under the old intent, which can permanently exclude the right answer.no_evidence — the customer stated they have no requirement for an attribute, so the
turn carries nothing and must not be mined for evidence.Lexical cues were built first and measured on held-out templates, and they are not enough:
| signal | hand-written cues | this model |
|---|---|---|
| override → clear rejection state | 37.5% | 100.0% |
| no-evidence → skip the turn | 0.0% | 100.0% |
| override false positives (of 6,400) | 0 | 2 |
| no-evidence false positives (of 8,000) | 0 | 0 |
The no-evidence row is decisive. The held-out templates say "indifferent", "nothing to add", "unspecified" where the training templates said "no further preference", "any choice is fine", "use your judgment" — zero shared vocabulary. A lexical rule cannot survive that shift; semantic classification is the only mechanism that transfers when the vocabulary changes, which is the entire threat model.
Overall six-way accuracy under the turn mask: 0.9909 on 9,600 held-out rows. The one
material error is buying_opening → override_opening (85/1600), which is benign — it clears
a rejection set that is empty at turn 1.
Positional and alphabetical; id2label in config.json is authoritative.
0 buying_opening opening turn that also states a requirement
1 constraint_update a later turn supplying a requirement
2 no_evidence the customer declines to constrain this attribute
3 override_opening opening turn of an intent-change scenario
4 override_update the customer replaces an earlier requirement
5 plain_opening opening turn with a category and no requirement
Call it only on messages that a literal recognizer has already failed to match. In the host agent this is enforced by control flow, not by a threshold: on clean traffic the gate matches 463 of 463 messages, so the model records 0 loads and 0 inferences and the agent's score is unchanged by construction.
A deterministic turn mask is applied after the model: turn == 1 admits only opening
acts, later turns only reply/update acts. That is a released property of the environment,
not something learned, and applying it materially raised accuracy in development.
distilbert-base-uncasedApache 2.0, inherited from distilbert-base-uncased.