Downloads · 30 days
10
1% of all-time downloads
suraj10620/UnchaosLM
UnchaosLM is a text generation model from suraj10620. Use it when you need the model to write or continue text. It is set up for mlx. The card lists the license as apache-2.0.
<p align="center" <img src="https://huggingface.co/suraj10620/UnchaosLM/resolve/main/assets/banner.png" alt="UnchaosLM — chaos in, one clear next step out" width="100%" </p
Downloads · 30 days
10
1% of all-time downloads
All-time downloads
727
Public
Parameters
4B
2.3 GB on disk
Likes
1
Public
Click a slice to open those files.
.safetensors2.3 GB · 99%
How the weights are stored.
U324B · 100%
From the Hugging Face model README
Work arrives from everywhere: a Slack mention, a ClickUp task, an email ticket. You give one of them to UnchaosLM:
SIGNAL TYPE: hiver_mention
CONVERSATION #6689 | MY NOTE 4 days ago: "@Sameer can you check the premium invoice logs for Sofia P.?"
STATUS: no response from teammate yet
And it answers, in a fixed format an app can display:
{
"severity": "medium",
"tier": "P3",
"action_direction": "waiting_on_them",
"owner": "Sameer",
"next_step": "Nudge Sameer on the premium invoice logs for conversation #6689",
"deadline_suggestion": "this_week",
"escalation_flag": false
}
In plain words: not urgent, but you're waiting on Sameer — nudge him this week. You didn't have to re-read the thread.
Do that for every message in your day, and you get one sorted to-do list instead of five noisy inboxes.
Monday morning, 40 unread threads. Triage Copilot runs every new mention, task, and ticket through UnchaosLM. You open one queue sorted by what actually needs you — instead of five inboxes sorted by noise.
The escalation buried in a busy channel. "Acme's checkout is returning 500s" lands between two memes at 4pm. UnchaosLM flags it P1 with the escalation flag on and a concrete next step — join the escalation call — so it never depends on someone scrolling back.
The ask nobody answered. That's the Sameer example above: your own requests that quietly stalled come back as waiting on them — nudge this week, instead of dying in a thread.
"What's on fire today?" The same model also answers questions and takes actions on your queue. Ask in plain language and it lists your urgent items; follow up with "book an hour for the Acme thing" and it proposes a calendar block you approve.
Covering the shared inbox. "Who's sitting on SLA breaches?" — it checks breached and at-risk conversations across your shared inboxes before the weekly report would have caught them.
| Won't miss the big stuff | Won't make things up | Won't act without you |
|---|---|---|
| Anything touching a customer, a deadline promise, or a security issue gets flagged as urgent. When in doubt, it flags. | Names, links, and tasks come from your message — or not at all. | Calendar changes are proposals. You approve them. |
Measured on a held-out test set — 84 signals plus 15 agent tasks, none seen in training. The test set, the script, and every model's results are published in eval/, so you can rerun everything yourself. Every model ran locally with the same script and settings: the base it was finetuned from, its twice-as-big sibling, and newer 2025–2026 releases in the same size class.
| Model | Triage fields correct | Right owner | Right tier | Escalations caught | False alarms | Right tool |
|---|---|---|---|---|---|---|
| UnchaosLM v4 · 4B | 84% | 86% | 83% | 26 of 32 | 2 | 6/6 |
| Gemma‑4‑E4B (Apr 2026) | 72% | 19% | 69% | 22 of 32 | 3 | — |
| Qwen3‑4B‑2507 (Jul 2025) | 65% | 24% | 48% | 23 of 32 | 12 | 4/6 |
| Qwen3‑4B (base) | 65% | 29% | 51% | 25 of 32 | 11 | 4/6 |
| Qwen3.5‑4B (Mar 2026) | 63% | 13% | 55% | 32 of 32 | 27 | 5/6 |
| Qwen3‑8B | 63% | 24% | 46% | 26 of 32 | 13 | 5/6 |
| Llama‑3.2‑3B | 60% | 21% | 42% | 24 of 32 | 15 | — |
Three things the table shows:
Easiest: put this repo's folder in ~/.lmstudio/models/suraj/UnchaosLM/ and it shows up in LM Studio.
Or from the terminal:
pip install mlx-lm
mlx_lm server --model suraj10620/UnchaosLM --port 8091 \
--chat-template-args '{"enable_thinking":false}'
That gives you a local API any OpenAI-style client can call. Use the system prompt in SYSTEM_PROMPT.txt and temperature 0.
LoRA finetune of mlx-community/Qwen3-4B-4bit (Qwen3-4B, 4-bit, MLX format), adapters fused into the weights. Two trained modes: strict-JSON extraction (full schema in SYSTEM_PROMPT.txt: is_actionable, action_direction, severity + rationale, tier P1–P4, owner, why_it_matters, next_step, deadline_suggestion, escalation_flag) and native Qwen3 tool calling over 6 tools (list_items, get_item, resolve_person, propose_calendar_block, list_calendar_events, get_sla_status).
LoRA rank 8 on the top 8 layers · batch 2 · lr 1e-4 · ~1.5 epochs · max seq 1536 · --mask-prompt · mlx-lm on Apple silicon. Agent scenarios are two rows each (tool-call turn + grounded answer) since --mask-prompt trains only the final assistant message. Keep enable_thinking: false at inference — trained without thinking traces.
| Version | Examples | Added |
|---|---|---|
| v2 | 532 | Slack + ClickUp triage extraction |
| v3 | 1,032 | +500 synthetic Hiver email-ticket signals |
| v4 (current) | 1,232 | +200 agent/tool-calling rows |
All data is synthetic. Real support exports were mined locally for aggregate patterns only (issue categories, business mix); no real names, emails, or ticket text entered any dataset.
eval/eval.py on eval/test.jsonl (99 held-out rows: 84 extraction, 15 agent). Greedy decoding, enable_thinking: false, max 512 tokens. Extraction scores exact match on the 7 deterministic fields (is_actionable, action_direction, severity, tier, owner case-insensitive, deadline_suggestion, escalation_flag); free-text fields are unscored. Field accuracy counts unparseable outputs as wrong on all 7 fields — on parseable outputs alone, v4 scores 90.8% (496/546) with escalation recall 26/27. Escalation false alarms count signals flagged escalation_flag: true whose gold label is false (52 such signals exist); UnchaosLM's escalation precision is 26/28 flagged = 92.9%. Agent scoring uses the 6 rows whose gold ends in a tool call (the 9 grounded-answer rows aren't auto-scorable); exact-argument match is 3/6 for v4 vs 0–2/6 for the others — two of v4's three misses are the known missing-tier-filter gap. The tool-call parser accepts both Qwen3's JSON-in-<tool_call> and Qwen3.5's XML-parameter format, with numeric-string coercion for argument comparison; Gemma-4 and Llama-3.2 run with --skip-agent since they emit other formats. Comparison models are the mlx-community 4-bit builds, evaluated 2026-07-13→15. eval/rescore.py recomputes any model's metrics from its saved raw generations. Full per-model outputs are the results_*.json files in eval/.
Apache 2.0, inherited from Qwen3-4B. Built as the model layer for Triage Copilot.
</details> <br> <p align="center"> <sub>UnchaosLM v4 · July 2026 · built for Triage Copilot</sub> </p>