The calls that shaped it.
Filter before retrieval, not after
Post-filtering generated answers is too late: the restricted text has already been in the prompt. Resolving access first, and failing closed when it can't be resolved, makes leaks structurally impossible rather than unlikely.
Hybrid over pure vector search
Company documents are full of acronyms, product codes and policy numbers. Dense vectors handle paraphrase; BM25 handles the exact terms. RRF combines both without hand-tuned weights.
Route before you retrieve
Not every message needs a search. Classifying intent first saves latency and tokens on small talk and product-help questions, and gives one clear place to enforce guardrails.
Provider-agnostic LLM layer
One interface over Groq, OpenAI, Gemini and Ollama, so the model can be swapped for cost, latency or data-residency reasons without touching retrieval.