Gemini agent vs production: 40-question benchmark

Rettsdata AI · run 23 September 2026 · production = main @ 01b8224 · candidate = staging @ f0e07c1

Verdict. The candidate gives clearly better answers: both judges preferred it on 76 of 80 blind comparisons (95%), it got every gold fact right, and fewer of its claims are unsupported by the source they cite (6.9% vs 11.1%). It is slower: median time to first answer text rises from 7.8 s to 12.1 s, and with priority processing it costs roughly 2.6× more per answer at today's prices.
Blind preference (both judges)
95%
candidate wins 76 · production 4 · tie 0
Gold-fact accuracy
100%
production 95%
Unsupported claims
6.9%
production 11.1%
Median time to first text
12.1 s
production 7.8 s

What was compared

Production (today)Candidate (staging)
PipelineFixed: generate queries → search each (topK 50) → evaluate → Cohere rerank to 20 → answerAgent loop: model calls search (topK 30, parallel) and expand as it sees fit, then answers
ModelGPT-4.1 on AzureGemini 3.7 Flash on Vertex AI, medium thinking, Priority PayGo
PromptLangfuse answer (production)Langfuse answer-v2 (label gemini, v5)
Citations[n] index into the 20 reranked chunks<citation ids="…"/> with chunk ids, repaired by middleware

Both systems ran their real code paths from the respective commits, headless (no database writes), same machine, same concurrency (3 at a time each, interleaved), same 40 questions.

Answer quality

Blind pairwise preference

Each judge saw both answers as A and B in a randomised order, with citations renumbered to the same [k] style so the format didn't reveal the system. The two judges picked the same winner on 90% of questions.

ProductionCandidate
Accuracy (1–5)
3.59
4.55
higher is better
Completeness (1–5)
3.29
4.59
higher is better
Clarity (1–5)
4.23
4.64
higher is better
Source use (1–5)
3.06
4.14
higher is better
SetCandidate winsProduction winsTies
Gold (15 questions × 2 judges)2910
Real production questions (25 × 2 judges)4730

Judge self-preference check: GPT-5.5 preferred the candidate 37 of 40 times and Gemini 3.1 Pro 39 of 40, so the Gemini judge was not meaningfully more favourable to the Gemini answers.

Accuracy on 15 gold questions

Settled questions with a fixed answer key (deadline, amount or age plus the governing provision). Score = share of key facts stated correctly (partial = half), averaged over both judges. ⚑ = number of judges that flagged at least one incorrect legal statement elsewhere in the answer.

QuestionProductionCandidateCandidate preferredProd timeCand. time
Hva er oppsigelsesfristen når en arbeidstaker er ansatt på prøvetid?63% ⚑2100%2/211.1 s19.6 s
Hvor lang kan en prøvetid maksimalt være etter arbeidsmiljøloven?100%100%2/220.2 s17.1 s
Hva er den alminnelige foreldelsesfristen for fordringer i norsk rett?100%100%2/29.4 s14.3 s
Hva er den absolutte reklamasjonsfristen ved forbrukerkjøp?100% ⚑1100% ⚑12/213.8 s16.1 s
Hvor stort depositum kan en utleier kreve ved leie av bolig?100% ⚑1100%2/212.0 s15.4 s
Hva er oppsigelsesfristen for leie av bolig når ikke annet er avtalt?100%100%2/26.6 s17.3 s
Hva er minstekravet til aksjekapital i et aksjeselskap (AS)?100%100%2/211.2 s10.0 s
Hva er klagefristen for enkeltvedtak etter forvaltningsloven?100%100%2/212.6 s13.3 s
Hva er ankefristen for dommer i sivile saker etter tvisteloven?100% ⚑2100%1/27.8 s17.8 s
Hvor mange feriedager har en arbeidstaker krav på etter ferieloven?100% ⚑1100% ⚑12/27.8 s13.0 s
Hva er alminnelig arbeidstid etter arbeidsmiljøloven?100% ⚑2100%2/210.7 s17.7 s
Hvor stor er pliktdelsarven til livsarvinger etter arveloven?100%100%2/210.7 s12.9 s
Hva er strafferammen for tyveri etter straffeloven?100% ⚑1100% ⚑12/28.2 s15.5 s
Hva er den kriminelle lavalderen i Norge?100%100%2/29.5 s11.5 s
Når blir man myndig i Norge?63% ⚑2100% ⚑12/28.1 s11.5 s

Incorrect-statement rate (answers flagged by a judge): production 40%, candidate 13%. Production's flags were mostly wrong sub-sections (e.g. the wrong ledd of aml. § 15-3) and invented exceptions (e.g. a one-week appeal deadline in tvl. § 29-5); the candidate's were imprecise side remarks.

Grounding and hallucination

Each judge listed up to 15 material legal claims per answer and checked each against the text of the source it cites (not against its own knowledge). “Unsupported” means the cited source does not say it, which is the closest measurable proxy for hallucination. 854 claims graded for production, 879 for the candidate.

SupportedPartiallyUnsupportedNo citation
Production
52%
23%
11%
14%
Candidate
63%
26%
7%
Citation metricProductionCandidate
Citations per answer5.27.9
Citation ids that resolve to a retrieved source100.0%98.8%
Claims with no citation14.1%4.6%
Unsupported claims, GPT-5.5 judge11.9%7.6%
Unsupported claims, Gemini 3.1 Pro judge10.1%6.0%
Answers with no citations at all00
Bug found and fixed during the benchmark. The first candidate run showed only 20% of citation ids resolving. Chunk ids were bare section paths such as kapittel/15/paragraf/15-3, which repeat across laws, so the model glued the document id on. Those citations would not have resolved in the chat UI. Ids are now documentId/section (or documentId#hash for case law), and whole-document citations resolve to that document's first chunk. The candidate numbers above are from the run after the fix (commit f0e07c1, now on staging).

Speed

Wall-clock from sending the question. “First text” is the first visible answer token. The candidate shows its search steps in the UI before that, production shows status text.

ProductionCandidate
First text, median
7.8 s
12.1 s
lower is better
First text, p90
9.2 s
17.3 s
lower is better
Complete answer, median
12.0 s
17.8 s
lower is better
Complete answer, p90
16.7 s
25.3 s
lower is better

The candidate is slower mainly because it reads more: 66 retrieved chunks and 73k input tokens per answer vs 20 chunks and 20k, plus ~920 thinking tokens, and it writes longer answers (median 2545 vs 1721 characters).

Behaviour and cost

Metric (mean per answer)ProductionCandidate
Search calls10.0 generated queries2.6 (parallel)
Expand callsn/a0.0
Chunks the model read2066
Input / output tokens (answer model)20,182 / 49373,149 / 2214
Est. model cost, standard pricing$0.046$0.063
Est. with Priority PayGo (as deployed)n/a$0.118
Est. with priority after the 1 Jan 2027 price risen/a$0.237
Errors / truncated / empty answers0 / 0 / 00 / 0 / 0

Prices: GPT-4.1 $2 / $8 per 1M tokens plus ~$0.002 per Cohere rerank; Gemini 3.7 Flash $0.75 / $3.75 (introductory, doubling on 1 Jan 2027), Priority PayGo taken as +87.5% (Google quotes 75–100%). Production's cost covers only the answer call; its query-generation and evaluation calls were not counted, so production is somewhat understated.

Method and caveats