Company knowledge, with permissions.
Fewer repeated questions to senior people, and no leaked documents. Ask across GitHub, Linear, Notion, Confluence and Slack; get an answer that cites its sources and shows only what you are allowed to see.
A document someone lost access to yesterday must not show up today. Connectors sync incrementally and carry permission changes as first-class events.
Post-filtering leaks: a top-10 list with 8 items removed tells the asker something exists. We carry the access list into the index and filter there.
Developers search for identifiers: ticket numbers, function names, ADR codes. Embeddings are bad at exact tokens. Keyword search catches them, vectors catch the paraphrases.
If retrieval returns nothing relevant, the system says so. An answer without a source is worse than no answer.
Searching everything for everything is slow and noisy. A cheap first pass rewrites the question and picks the sources; an acronym list from your own wiki does more than a bigger model.
Questions people actually asked become the test set. Changing how documents are split, or the model, without running it is a regression waiting to happen.
When an answer is wrong, the trace shows whether retrieval, ranking or the model failed. When the bill grows, the trace shows which questions cost the most.
* Select a stage to see the decision behind it.