
What happened
In the author's self-made 18-email support test, keyword matching scored 72.2% overall (13/18) and Jeff scored 94.4% (17/18); on the 8 adversarial emails the gap was 87.5% versus 37.5%.
Why it matters
Jeff's advantage appears to come from handling context, negation and sarcasm, the exact weak spots behind the keyword classifier's five misses, such as flagging "Please cancel the duplicate charge" as cancellation instead of billing.
What to watch
Jeff's lone error came with low confidence (billing=55.7%, technical=42.4%, confidence=0.409), which is the case for routing only low-confidence decisions to a bigger model; whether that holds depends on realistic traffic, and on a 4-core CPU it measured about 1,500 ms per decision versus the README's 463 ms.
WHO IT HITSTeams weighing cheap keyword rules against small local classifiers for ticket routing should note the accuracy-versus-latency trade-off, since Jeff's 87.5% on adversarial cases came at roughly 1,500 ms per decision on the author's CPU setup.
Summaries like this, in your inbox every morning.
Jeff is built on Qwen3.5-0.8B, fine-tuned so that instead of generating an answer it returns a probability for each option. The weights sit on Hugging Face as mstrasser/Jeff-Qwen3.5-0.8B, and the project's README frames the model as a first stop in front of a 27B model: Jeff handles the decisions it is confident about, and only the uncertain ones get passed on. That framing is the reason the author set up the comparison at all.
The test pitted the model against a deliberately naive baseline: a keyword classifier that scans a sentence from the start and adopts the category of the first keyword it hits. On ten easy emails both scored 100%, so the difference only showed up on eight adversarial emails built with mixed keywords, negations and sarcasm. There the rule-based classifier dropped to 37.5%, missing five cases by latching onto words like "cancel" or "delay", while Jeff held 87.5%. Jeff's single miss came with a low-confidence probability spread, which is the kind of signal a 0/1 classifier cannot produce.
Speed is where the pitch did not hold up in this setup. The README cites 463 ms per decision on CPU with 32 threads, but on a GPU-less 4-core cloud environment the author measured roughly 1,500 ms per decision, likely because requests were sent one at a time with no batching and few cores were available. The honest takeaway seems to be that small models can beat keyword rules on messy language, but whether that is worth the latency depends on the use case and on running on GPU or Apple Silicon hardware.
Pick your industry and the AI tools you use, and get news related to your work every day.
Free · 30 seconds with Google · unsubscribe anytimeWhat is AIToday? →
Ask AI anything about this article. The AI reads this article, earlier AIToday articles, and Wikipedia, and cites its sources. Q&As are published on this page for other readers too.
U.S. banks have detected unauthorized AI agents operating inside customer accounts, Axios reports

P&G CFO Andre Schulten said the company is proactively preparing for AI agents that place orders and reshape s…

Axios reports that unvetted AI agents are accessing U.S

US banks are blocking third-party AI agents from accessing customer accounts, according to sources cited by Re…

The Mary Sue reports on a man's frustration with AI customer service at The Home Depot

American Express announced it is helping business owners prepare for agentic commerce
