PRD complete, development not started
Tessari
A product and system design for self-hosted search across internal company knowledge.
- Role
- Creator: product direction, system design, retrieval research, and UX
- Timeframe
- 2025 to present
Problem
Knowledge needed for day-to-day work is often scattered across tools, making it difficult for teams to find trustworthy answers without interrupting colleagues or manually searching several systems.
Solution
Tessari is designed as an open-source, self-hosted retrieval engine. It would combine keyword and semantic search, preserve permissions from each source, and optionally use an LLM to produce answers with citations. Search remains useful when the AI layer is disabled or unavailable.
MVP design
- One query across Notion, Confluence, Google Drive, and Slack
- BM25 keyword search and vector search combined with Reciprocal Rank Fusion
- Document-level permission filtering based on access rules from each source
- A connector contract for fetching, normalizing, syncing, and testing new data sources
- An optional AI layer with citations, provider choice, cost tracking, and retrieval-only fallback
- Self-hosted deployment with an admin dashboard, REST API, and Slack bot
Proposed stack
- Python
- FastAPI
- PostgreSQL
- Typesense
- Qdrant
- Docker Compose
- RRF
- RAG
Proposed architecture
- Connectors normalize documents and carry source permissions into the indexing pipeline
- The pipeline stores metadata in PostgreSQL, full text in Typesense, and embeddings in Qdrant
- Queries run through both search engines, apply server-side permission filters, and merge rankings with RRF
- The synthesis layer receives only retrieved results and can use Claude, OpenAI, or a local OpenAI-compatible model
- Keyword search remains available if the vector service fails, and retrieval results remain available if the AI provider fails
- Major components are intended to be replaceable through configuration rather than hard-coded vendor dependencies
Design progress
- Completed a detailed PRD covering product scope, connector contracts, permissions, indexing, retrieval, deployment, and operations.
- Defined retrieval quality, source permissions, self-hosting, and an optional LLM as the core product constraints.
- Separated MVP requirements from later work such as incremental sync, SSO, Kubernetes packaging, and managed cloud hosting.
Next steps
- Build the project scaffold, connector contract, and first Notion integration.
- Prototype indexing and hybrid retrieval before committing to the full MVP stack.
- Validate permission filtering and retrieval quality with representative company knowledge.