The bot interrogated students.
Evaluation showed 18.6 percent of questions got a counter-question instead of an answer; I rewrote the clarification policy and verified the gain with an A/B evaluation.
Case study · Masaryk University, CZSAn assistant that answers study-abroad questions on Masaryk University's official site, grounded in the university's own pages, every answer cited.

The rules live in 778 constantly changing sources in Czech and English, and every student question used to be answered by hand, one email at a time.
Answers study-abroad questions in Czech or English, grounded in retrieved CZS sources and cited, so every claim traces back to a page. Facts that must not be guessed (current date, deadlines, contacts) come from deterministic tool calls, not the model's memory.
Every question is classified, then answered from hybrid OpenSearch retrieval (BM25 plus Voyage dense vectors, fused with RRF, two rerankers, MMR) over a heading-aware parent-child index, with a CRAG-style answerability gate that re-retrieves on weak context. Verified facts come from deterministic tool calls, not the model, so answers stream over SSE from DeepSeek-v3.2 on CERIT.
CZS handed over their archive of real student questions with verified answers; the system turns every new answer back into that archive.
707 of 715 pairs are already staff verified, and the loop only adds to that number.
A continuous LLM-as-judge harness grades in-domain questions from the CZS FAQ (real historical plus generated) against the sources for accuracy, groundedness, and hallucination. Across 37 cycles and 15,362 runs, 10,438 were gradeable answers: 84 percent scored 9 or 10, mean 9.0, groundedness 8.6, hallucinations near 1 percent.
Accuracy distribution across 10,438 gradeable answers from 15,362 judged runs. The correct source appears in the top retrieval results 92 percent of the time, up from 79 before the parent-child index.
Evaluation showed 18.6 percent of questions got a counter-question instead of an answer; I rewrote the clarification policy and verified the gain with an A/B evaluation.
I built a parent-child index: match on small, precise passages, then expand to the full section so the model answers with complete context. The right page now reaches the top results 92 percent of the time, up from 79.
The same retrieval redesign cut median answer latency by 4.4 seconds while answer accuracy went up, not down. Better context reached the model in fewer, cleaner passages.
None of these showed up in casual testing.
Staff see every conversation, review anything questionable, and update the knowledge base without touching code.
The screens shown here are illustrative mockups with invented example data; the real dashboards live behind a staff login.
| ID | Source | Conf. | FB | Time | Intent | Program | User query |
|---|---|---|---|---|---|---|---|
| 4821 | STUDENT | 0.94 | 8.1s | check_requirements | Erasmus+ | What documents do I need for the selection? | |
| 4820 | STUDENT | 0.88 | · | 11.4s | find_deadline | Erasmus | When is the application deadline this year? |
| 4819 | STUDENT | 0.72 | 9.7s | scholarship_query | Erasmus+ | How much is the grant for a semester in Norway? | |
| 4818 | STUDENT | 0.91 | 7.3s | find_contact | Bilateral | Who is the coordinator for my faculty? | |
| 4817 | DEV | 0.83 | · | 10.2s | explain_procedure | Internship | How do I get my traineeship certificate signed? |
| 4816 | STUDENT | 0.79 | · | 12.8s | clarify_document | BIP | Do I upload the Learning Agreement before or after? |
| 4815 | STUDENT | 0.96 | 6.9s | find_deadline | Erasmus+ | When do results of the selection come out? | |
| 4814 | STUDENT | 0.87 | · | 9.1s | check_requirements | CEEPUS | How many ECTS do I need to complete abroad? |
Every question and answer with confidence, sources, feedback, and response time; searchable.
Thumbs-down and low-confidence answers wait here for staff verification.
| Source URL | Status | Chunks |
|---|---|---|
| czs.muni.cz/.../erasmus-evropa | up to date | 35 |
| czs.muni.cz/.../prakticke-staze/erasmus | up to date | 18 |
| czs.muni.cz/.../financni-podminky | changed | 12 |
| czs.muni.cz/.../po-ukonceni-pobytu | up to date | 9 |
| czs.muni.cz/.../mezifakultni-dohody | up to date | 14 |
All 778 monitored pages with change-detection status, plus manual upload.
Candidate FAQs mined from real conversations; nothing enters without human approval.
The AI drafts, humans decide; CZS gets the controls, not a support contract.
No account, no personal data collected. Conversations are logged for quality review.
Everything runs on a dedicated server for the university, not a shared third-party AI service, and the bot reads only CZS's public pages.
If users keep asking questions your site already answers, I build the assistant that closes the gap and the measurement proving it works.
An assistant your team controls, with the numbers to prove it works.