At a glance
Table with columns: Dwight 4B 1.0 | Dwight 4B 1.0 |
|---|
| Base model | Qwen3-4B-Instruct-2507 (Apache 2.0) |
| Context | 32,768 tokens |
| Decisions | one-token answers with calibrated probabilities |
| Insights | JSON with heading, detail, grade, score, timestamp and a verbatim excerpt |
| Hardware | one 24-80 GB GPU (bf16, ~8 GB of weights); best with vLLM |
| License | Apache 2.0 |
Dwight as a classifier
One question in, one token out, with a calibrated confidence. Asked about the same call again,
each further question costs a few hundredths of a second.
Accuracy vs Jev (313 questions on 120 held-out calls, labels set by an independent LLM
referee; the same questions for both models):
Table with columns: Question, Dwight 4B, Jev 1.13| Question | Dwight 4B | Jev 1.13 |
|---|
| Next meeting set (High / Medium / Low) | 0.79 (macro-F1 0.79) | 0.57 (macro-F1 0.39) |
| Pricing sentiment (low / mid / high) | 0.86 | 0.74 |
| Competitor discussed (High / Medium / Low) | 0.66 (macro-F1 0.64) | 0.65 (macro-F1 0.57) |
| Objection raised and unresolved (yes / no) | 0.64 | 0.79 |
At scale (tens of thousands of questions on sales calls, agreement with a large frontier model's
answers on the same calls): next meeting 0.80, competitor 0.76, objections 0.75, pricing 0.76,
with calibration error (ECE) 0.02-0.05.
Speed (one NVIDIA H100, vLLM, bf16; Jev and GLM 5 through their APIs):
Table with columns: ~20-minute call, Dwight 4B, Jev 1.13, GLM 5| ~20-minute call | Dwight 4B | Jev 1.13 | GLM 5 |
|---|
| First question | 0.13 s | 0.34 s (all questions in one request) | 1.9 s |
| Each further question on the same call | 0.02 s | (included above) | 1.9 s |
On longer calls Dwight's first question takes 0.54 s at ~60 minutes (20k tokens) and 1.06 s at
~90 minutes (33k tokens); further questions stay under 0.08 s, because vLLM keeps the
transcript cached (enable_prefix_caching=True).
Dwight as an insight model
Structured, quotable insights: what was said, when, how strong the signal is, and the exact words.
Compared with GLM 5 on identical inputs (475 call checklists across 40 held-out calls from 4
companies; the reference is a large frontier model's answer on the same calls):
Table with columns: Dwight 4B, GLM 5 | Dwight 4B | GLM 5 |
|---|
| Quotes found verbatim in the transcript | 100% | 98.7% |
| Grade agrees with the reference | 83% | 72% |
| Its insights the reference also reports | ~57% | ~44-56% |
| Reference insights it also finds | ~50% | ~61% |
| Median time per checklist | 4.2 s (one H100) | 12 s (API) |
On one H100, 4 checklists at a time, Dwight writes about 2,000 checklists an hour. It is precise
and faithful to the transcript, and more conservative than larger models: it reports fewer
insights.
Cost at scale
One month at 10,000 calls, each with 10 decision questions and 10 insight checklists (100,000
decisions and 100,000 insights):
Table with columns: Per month, Dwight 4B, self-hosted, GLM 5 (API), Frontier API model, Jev (API)| Per month | Dwight 4B, self-hosted | GLM 5 (API) | Frontier API model | Jev (API) |
|---|
| 100,000 decisions | ~$5 | ~$1,000 | ~$1,750 | ~$5-10 |
| 100,000 insights | ~$200 | ~$1,970 | ~$6,940 | not offered |
| Total | ~$205 | ~$2,970 | |
How these are built: Dwight on one H100 billed per second at about 3.95anhour(about1GPUhourforthedecisions,about50fortheinsights;theGPUisoffwhenidle).GL2,900 a month and only pays off
at much higher volume.
Quick start: decisions
Dwight answers one question at a time with one token. Put the transcript and the question in
this layout (letters A, B, C... map to your options in order):
system: You are a sales decision model. Read the conversation and answer the question with exactly one option token. user:<conversation>[00:00:05] [Maya Brooks]: Can we meet Tuesday at 10?[00:00:09] [Dan Ruiz]: Tuesday 10 works, I'll send the invite.</conversation> <question id="next_meeting_set" type="choice">Was a concrete next meeting agreed, with a date and time?</question>Options:A) HighB) MediumC) LowAnswer with exactly one letter.
For a yes/no question use type="boolean" and end with Answer yes or no.; for a 0-10 score
use type="score" with options A) 0 ... K) 10. Read the probabilities of the option tokens
from the first generated token and renormalize over them: that is the confidence.
See examples/decide.py (vLLM, about 40 lines).
Questions are yours to write: any question a reader could answer from the call works best
when it is specific and states what counts as each option.
Quick start: insights
Give the transcript after a short description of what to look for, and ask for JSON. See
examples/insights.py. Output shape:
{"details": [{"heading": "Next meeting set for Tuesday", "detail": "The buyer agreed to a follow-up on Tuesday at 10:00 and the rep will send the invite.", "grade": "High", "score": 90, "timestamp": "00:00:09", "excerpt": "Tuesday 10 works, I'll send the invite."}], "summary": "A follow-up meeting was agreed for Tuesday at 10:00."}
When nothing qualifies, Dwight answers with a single detail headed "No insights found as per
checklist".
One line per turn: [HH:MM:SS] [Speaker name]: text for decisions,
[HH:MM:SS] Speaker name: text
for insights. Timestamps in the answer refer to these markers. Speaker names can be
anything; real names give the most natural output.
Quantized versions
GGUF quantizations for llama.cpp, LM Studio and Ollama, made by
bartowski (thank you!):
bartowski/zime-ai_dwight-4b-GGUF,
from BF16 (8.05 GB) down to IQ2_M (1.49 GB).
ollama run hf.co/bartowski/zime-ai_dwight-4b-GGUF:Q5_K_M
In LM Studio, search for zime-ai_dwight-4b and pick Q5_K_M.
Using the confidence scores? Use Q5_K_M or higher. Decisions read the probabilities of the
option tokens, and quantization shifts those probabilities before it changes the answers. The
quantizations were calibrated on a general text corpus, not on sales calls. For insights and
plain answers without confidence, Q4_K_M (2.59 GB) is a good default.
Training
Fine-tuned from Qwen3-4B-Instruct-2507 with LoRA on 8 NVIDIA H100 GPUs, on about 35,000
sales-call insight examples covering 500+ call behaviors, plus about 8,000 decision questions,
from synthetic B2B software sales calls. The training data is not released.
Limitations
- Conservative: finds fewer insights than larger models, most of all objections.
- Weaker on companies and call types unlike its training data.
- English only; trained on B2B software sales calls.
- 32k tokens of context; longer transcripts must be shortened.
- Not a source of truth about people: verify important outputs against the transcript.
Versions
Table with columns: Version, Notes| Version | Notes |
|---|
| 1.0 | First release |
License
Apache 2.0. See LICENSE and NOTICE. Built on Qwen3-4B-Instruct-2507 by the
Qwen team.
About Zime
Zime is an AI platform for sales teams: it analyzes every sales call, coaches
reps and surfaces what moves deals forward. Dwight is built from what Zime learned analyzing real
sales conversations. Learn more at zime.ai.
Citation
@misc{dwight4b2026, title = {Dwight 4B: straight answers about sales calls}, author = {Zime AI}, year = {2026}, url = {https://huggingface.co/zime-ai/dwight-4b}, note = {https://zime.ai}}