Trustdesk

Case Study · AI Deployment

Fills in security questionnaires from a company's own documentation. Every answer links to its source, and questions the documentation doesn't cover are marked as such.

Trustdesk drafting four questionnaire answers, each with a status and its source documents

Four questions, four outcomes. Each answer links to the section it was taken from.

50test questions with expected answers
12of them have no answer in the docs
0invented answers on those 12, in the version in use
2models, Mistral and Gemini, graders checked against a person

The problem

Software vendors selling to large companies get the same spreadsheet over and over: a few hundred questions on encryption, hosting, certifications, backups. Someone spends days copying answers out of a security whitepaper and a data processing agreement.

Writing the text is the easy part to automate. The catch is that these answers end up in contracts, so a confident wrong "yes" is worse than an empty cell. Trustdesk is built around that: four possible outcomes, and never an answer without a source.

Answered

The documentation answers it, including a documented "no".

Partial

Part of it is documented. The answer says what is missing.

Not in documentation

No source found, so no answer. It lists the sections it checked.

Conflicting sources

Two documents disagree. Both are quoted so a person can decide.

The documentation belongs to Vantrel, a software company I invented: twelve documents, written with the gaps, near-misses and one contradiction that real documentation always has.

The knowledge base: the twelve Vantrel documents, their owners, versions and update dates

How an answer is produced

1 · Search

Find the 5 closest sections

Search by meaning, so a French question still finds an English page.

2 · Draft

The model reads only those

It returns a status, the answer, and which sections it used.

3 · Check

Code verifies the sources

Any source the model wasn't given is removed. Without a valid source, the answer is blocked.

4 · Review

A person sends it

The tool only drafts. Uncertain answers are flagged for review.

Step 3 is plain code, so the rule "every answer has a source" holds even when the model ignores its instructions.
Two drafted answers: one not in the documentation with the sections checked, one partial with two conflicting sources quoted

How I know it works

Every change runs against the same 50 questions, each with a reference answer. Some are easy. Others are traps: rephrased questions, questions in French, answers spread across three documents, and twelve questions the documentation doesn't answer. One model drafts, the other grades, and plain code counts the answers that claim something the documentation doesn't say.

Invented answers on the 12 undocumented questions, by prompt version

Version 1
8%
17%
Version 2in use
0%
0%
Version 3
8%
8%
Mistral (Ministral 14B)Gemini 3.5 Flash-Lite

Version 3 got the best grade of the three. Version 2 is the one in use, because it's the only one where neither model made anything up. Its cost: out of the 38 questions the documentation does answer, 2 were marked "not documented" with Mistral and 1 with Gemini. Those go to a person, with the sections that were checked. I picked the version whose mistakes are cheap, not the one with the highest score.

The Quality tab of Trustdesk: scores per model and the table of prompt versions

What the numbers changed

Each of these went against what I expected before measuring.

99% vs 95%

The textbook search lost

Share of the right sections found in the top 5 results. Mixing keyword and meaning search is the usual advice, but here meaning alone did better: keywords pushed the wrong sections up on rephrased questions.

12 vs 2

I checked the graders against a person

I graded 13 answers by hand. Gemini agreed with me on 12, Ministral 14B on 2: it rejected correct answers. Its scores mostly reflected how strict it was, so Gemini now does the grading.

0 req/min

Free tiers decide the design

Two Mistral models I planned on had a quota of zero, and Gemini allows 500 calls a day. Every run now logs which model answered, since it isn't always the one requested.

Why I build these

I'm a functional consultant moving into Solutions Engineering, Pre-Sales and AI Deployment. Deploying a model is mostly deciding what "good" means for the people who will rely on it, then checking with numbers that you got there.