The problem
Teams across several departments were losing time searching an internal wiki and downloading files to answer questions their own documentation already covered. The platform had to serve multiple tenants with isolated indices and slot into a wider ecosystem of notification, email and reporting agents.
What we built
Four services: ingestion, generation, config and memory. Ingestion runs event-driven Celery tasks that extract and chunk documents, embed them and index into per-tenant OpenSearch indices. Generation plans queries against conversation history and a glossary, expands each into up to five keyword and semantic variants, retrieves with a choice of BM25-only, semantic-only or hybrid strategies, and reranks with reciprocal rank fusion or one of three cross-encoder models. A critique node scores and refines answers over configurable iterations. Redis provides semantic caching, and results stream to clients over Server-Sent Events.
The result
A working multi-tenant knowledge agent. The memory service retains question, answer and node-level execution data to support multi-turn reasoning, and semantic caching removes redundant model calls.