Engineering documents from the cMCP pilot build (October 2026). Statuses here are engineering states, not product claims: see cMCP for what is available. All documents

← cMCP documents

LLM model results and timing

cMCP uses a language model for one job: turning a note, an e-mail or a Jira issue into short, separate facts. This page shows the models we measured, how good and how fast each one was, and how the time grows with the size of the text. Sections 1–5 were measured on our own server. Section 6 is an estimate for a GPU server (Hetzner GEX45), clearly marked, until that server is rented and measured.

94 % · 1 wrongQwen3 4B on our own CPU — production default for every account
99 % · 0 wronggpt-oss-120b on Groq — used only for synthetic test accounts
6.4 s vs 0.9 sone short note: local CPU vs Groq (median of 3)
12.6 s vs 4.8 sa 508-word text: local CPU vs Groq
95 sa 1,656-word text on the local CPU (production: 1–2 minutes for Jira issues over 1,000 words)

1 · Quality: which model finds the facts

24 synthetic notes with 68 known facts, same prompt for every model, answers judged blind (the judge did not know which model wrote what). Includes one empty note (should give no facts) and one prompt-injection note (should be refused). Measured 30 Sep 2026.

ModelRuns onFacts foundWrongEmpty note skippedInjection refusedMedian sp95 sLicenceOur use
Claude Sonnet (reference)Cloud100 %0yesyes——CommercialYardstick only — never sees company data
gpt-oss-120bGroq cloud99 %0yesyes0.61.4Apache-2.0First choice for synthetic test accounts
Qwen 27BGroq cloud97 %0yesyes0.30.5Apache-2.0Candidate
gpt-oss-20bGroq cloud85 %1yesyes0.40.6Apache-2.0Not chosen (2 failed calls)
Qwen3 4B Instruct 2507Our server (CPU)94 %1yesyes4.56.1Apache-2.0Production default for every account
Granite 3.3 2BOur server (CPU)96 %5nono2.94.6Apache-2.0Not chosen (more wrong facts)
Gemma 3n E4BOur server (CPU)94 %4noyes7.59.9Gemma termsNot chosen (slower, licence)
Gemma 3 4BOur server (CPU)90 %1yesno5.67.0Gemma termsEarlier default (licence)
Llama 3.2 3BOur server (CPU)87 %3yesyes3.715.4Llama licenceNot chosen
Phi-4 miniOur server (CPU)85 %0yesyes3.85.7MITNot chosen (misses facts)
Qwen3 4B (thinking)Our server (CPU)82 %6yesyes5.48.4Apache-2.0Not chosen
Gemma 3 1BOur server (CPU)82 %5nono1.92.6Gemma termsNot chosen (too many errors)
Highlighted rows are in use. Company data is only ever processed by the local model on our server; the cloud model (Groq) only sees the synthetic test account until the company approves a provider. If the cloud is down or slow, the test account falls back to the local model automatically.

2 · Timing by text size

The same synthetic notes joined into longer texts (1, 4, 10 and 22 notes, then 22 notes three times), each run 3 times per model; the table shows the median. The orange line is real production work: about 506 extraction jobs from bulk imports on 30 Sep – 2 Oct, measured as the time between one job and the next (it includes saving and indexing, so it is a little higher than the model alone). Measured 2 Oct 2026.

Local Qwen3 4B — testGroq gpt-oss-120bGroq gpt-oss-20bLocal Qwen3 4B — production
02040608010012014020501002005001,0002,000text size (words, log scale)seconds per textLocal Qwen3 4B — test: 34 words → 6.4 sLocal Qwen3 4B — test: 107 words → 13.7 sLocal Qwen3 4B — test: 246 words → 10.8 sLocal Qwen3 4B — test: 508 words → 12.6 sLocal Qwen3 4B — test: 1,656 words → 94.9 sGroq gpt-oss-120b: 34 words → 0.9 sGroq gpt-oss-120b: 107 words → 1.4 sGroq gpt-oss-120b: 246 words → 2.9 sGroq gpt-oss-120b: 508 words → 4.8 sGroq gpt-oss-20b: 34 words → 0.4 sGroq gpt-oss-20b: 107 words → 0.6 sGroq gpt-oss-20b: 246 words → 0.9 sGroq gpt-oss-20b: 508 words → 1.4 sGroq gpt-oss-20b: 1,656 words → 1.9 sLocal Qwen3 4B — production: 22 words → 7.4 sLocal Qwen3 4B — production: 52 words → 12.2 sLocal Qwen3 4B — production: 119 words → 17.7 sLocal Qwen3 4B — production: 617 words → 50.2 sLocal Qwen3 4B — production: 1,261 words → 131.3 sLocal Qwen3 4B — productionLocal Qwen3 4B — testGroq gpt-oss-120bGroq gpt-oss-20b
TextLocal Qwen3 4B — testGroq gpt-oss-120bGroq gpt-oss-20b
1 note34 words6.4 s4 of 4 facts · 3/3 ok0.9 s4 of 4 facts · 3/3 ok0.4 s4 of 4 facts · 3/3 ok
4 notes107 words13.7 s9 of 14 facts · 3/3 ok1.4 s11 of 14 facts · 3/3 ok0.6 s5 of 14 facts · 3/3 ok
10 notes246 words10.8 s5 of 34 facts · 3/3 ok2.9 s19 of 34 facts · 3/3 ok0.9 s20 of 34 facts · 3/3 ok
22 notes508 words12.6 s5 of 68 facts · 3/3 ok4.8 s40 of 68 facts · 3/3 ok1.4 s44 of 68 facts · 3/3 ok
22 notes x31,656 words94.9 s50 of 68 facts · 3/3 okfailed1.9 s46.5 of 68 facts · 2/3 ok

Production: local model on real work, by text size

Text sizeJobsAvg wordsTypical (p50)Slow (p90)Facts per text
≤ 30 words142227.4 s13.8 s3.3
31–80 words2065212.2 s17.0 s5.1
81–200 words7411917.7 s30.7 s11.9
201–1,000 words7461750.2 s111.8 s14.8
> 1,000 words101,261131.3 s164.7 s27.1
Long texts lose facts on the small model. "x of y facts" counts the facts returned against the facts known to be in the text (not judged one by one; for the tripled text the known facts repeat, so the y is the unique count). The local 4B model returns most facts for one or a few notes, but on long texts it keeps only a handful, and the time stops growing because it writes less. The large cloud model keeps far more. For long company texts, this argues for splitting them into parts before extraction or, in Phase 2, a larger approved model.
What this means. On our CPU the local model takes about 6–12 seconds for a short note and grows roughly in step with the text: a long Jira issue with many comments takes 1–2 minutes. Groq stays around one to a few seconds at every size. Because extraction runs in the background, nobody waits for it — a saved note is searchable at once, and its facts appear a little later.

3 · Search and sync timing by data size

Searching does not use the language model, so it stays fast as data grows.

WhatData sizeTypical (p50)Slow (p95)Quality / note
Search, live system (full request incl. sign-in and permission check)568 facts, 24 questions70 ms109 msright fact first 21/24, in top 5 22/24 · target 100 ms
Context pack for an AI app (live system)108 items, 2,000 tokens23 ms61 mstarget 150 ms
"Is my memory up to date?" check (live system, HTTP)one person5.3 ms6.2 mstarget 20 ms
Search engine alone, one store per account (spike)6,068 facts in 6 scopes27 ms36 msfirst 15/21, top 5 19/21 · no leaks across clients
Search engine alone, one store per scope (spike)6,068 facts62 ms120 msfirst 18/21
Same, with a re-ranking model on CPU (spike)6,068 facts469–2,740 ms694–3,842 msfirst 21/21 — too slow, switched off
Up-to-date check, database only (spike)220 people → 10,000 people0.05 → 0.77 ms0.05 → 0.83 msgrows slowly with headcount
Company-wide rule change reaches everyone (spike)220 people → 10,000 people2 → 55 ms—every person's memory marked for refresh
Rebuild the search index from our records (spike)1,017 facts23 s in totalsame top-5 results before and after
Loading facts into the search index (spike)6,068 facts13–44 facts per secondno language model needed

6 · On a GPU server: Hetzner GEX45 (estimate)

The GEX45 has one NVIDIA RTX PRO 4000 Blackwell SFF Edition (24 GB GDDR7, 432 GB/s, 770 AI TOPS, 70 W), an Intel Core i5-13500 (14 cores), 64 GB RAM and 2 × 512 GB NVMe, in Helsinki, for €214 a month plus €209 setup, with no minimum term. Nothing in this section is measured yet. It scales a published benchmark of the larger RTX PRO 4000 to this card and applies it to the same text sizes as section 2.

Model on the GEX45 GPU34 words107 words246 words508 words1,656 wordsOur quality test
Qwen3 4B Instruct (today's model)2.5 GB on the GPU · ~110 tok/s1.2 s2.1 s3.8 s7.0 s21.2 s94 %, 1 wrong (CPU run)
Qwen3 14B9.0 GB on the GPU · ~37 tok/s2.9 s5.6 s10.7 s20.3 s62.2 snot tested yet
Qwen3 30B-A3B (MoE, 3B active)18.6 GB on the GPU · ~85 tok/s1.6 s2.8 s5.0 s9.3 s27.9 snot tested yet
gpt-oss-20b (MoE, 3.6B active)13 GB on the GPU · ~80 tok/s3.5 s4.8 s7.1 s11.6 s31.2 s85 %, 1 wrong (Groq run)
Qwen 27B (dense)16.5 GB on the GPU · ~20 tok/s4.9 s9.8 s19.1 s36.7 s113.7 s97 %, 0 wrong (Groq run)
Measured today: Qwen3 4B on the CPUshared server, 8 threads6.4 s13.7 s10.8 s12.6 s94.9 s94 %, 1 wrong
How the estimate is made. Writing speed is limited by memory bandwidth. A published Ollama benchmark of the full-size RTX PRO 4000 Blackwell (672 GB/s) measured 98.9 tokens/s for an 8B model and 57.8 tokens/s for a 14B model (Q4_K_M, June 2026); the GEX45's SFF card has 432 GB/s, so speeds are taken as 64 % of those. Time per text = reading the prompt and the text (650 + 1.35 × words tokens) + writing the facts (25 + 35 tokens per fact, one fact per 27 words as in our test set; gpt-oss adds about 150 reasoning tokens) + 0.3 s. Prompt-reading speeds are rough, but they are a small share of the time.

4 · How we measured, and the limits

5 · What we chose