NTP Novi Sad Hackathon 2026 · EINSTEIN track · solo entry

EINSTEIN Matchmaker

Four Mozaik agents work a company's technical challenge at the same time, on one local model. The system proposes a researcher only when it can quote its sources, and it abstains out loud when it cannot.

1 min 33. Narration by a synthetic voice (Asso, SYSTASYS), disclosed on the end card. Entry by Hichem Benali, solo.

The one idea

A match and a coincidence look identical from the outside. Two documents sharing the word "anomaly" is not a link between a researcher and a factory floor, and two HTTP requests in flight is not two agents thinking at the same time. The same discipline is applied twice: to what the system says about the world, and to what it says about itself.

A system that cannot refuse cannot be trusted when it accepts.

The result, as measured

Equal-resource comparison, the same 24 cases in every arm, one frozen source digest throughout. Independent verdict PASS on 12 of 12 blocks and 72 of 72 case-arms, with 264 source claims re-checked against the raw files.

ArmAgentsAcceptedControls refused Wall timePeak slots
Solo112 / 246 / 6 67.0 min1
Serial roles412 / 246 / 6 67.1 min1
Parallel roles4 9 / 246 / 6 54.6 min2

Concurrency bought 18.5 % of wall time and cost three accepted cases out of twenty-four. There is no quality advantage here. There is a measured loss, and we publish it as it came out.

What makes that gap readable is the control pair: solo and serial agree on all 24 cases, while the parallel arm differs on 3. If the protocol were noisy, the two sequential arms would disagree too. They do not, so the difference is attributable to concurrency. All three arms refuse all six missing-evidence controls, so refusal does not depend on the architecture.

A plausible mechanism, offered as a hypothesis and not as a finding: two inferences sharing four CPU threads make each call slower, so more calls hit the per-call deadline. The parallel arm also issues 61 model calls against 73. Testing it would need the deadline relaxed, which would no longer be an equal-budget comparison.

The concurrency, proven from the server

The verifier does not accept client-side appearances. A run passes only with two distinct Mozaik producer IDs, overlapping task intervals, and a timestamp inside that overlap at which two distinct llama.cpp slots are both in PROCESSING. A negative control that deletes all slot evidence must be rejected, and is.

5009 of 7933 slot samples show two slots busy 63.1 % of observed compute 614.5 s across 4 windows client-only false concurrency rejected same-agent false concurrency rejected

Timeline of measured inference concurrency, drawn from the run trace
Drawn from the trace alone, no interpolated value. Regenerate it with python3 scripts/concurrency_figure.py runs/benchmark-v2/block-1/parallel evidence/concurrency-block1-verified.

What is not claimed

Run it yourself

git clone https://github.com/monkidy/einstein-matchmaker
cd einstein-matchmaker
npm ci --ignore-scripts
python3 scripts/prepare_data.py
python3 scripts/fetch_runtime.py
npm test                      # expect 28/28
python3 scripts/run_local.py node src/cli.mjs demo