Sidekick
Full-stack AI platform — Next.js admin UI, Django RAG backend, and Kubernetes DevOps
Overview
The Problem
Enterprise teams waste hours searching through internal documentation, SOPs, Slack history, and knowledge bases. Generic AI chatbots give hallucinated answers. What businesses need are assistants that know their specific context — and stay within it.
The Solution
Sidekick is a multi-tenant SaaS platform where each organisation deploys its own AI assistant, trained on its own data. The platform handles document ingestion, chunking, embedding, and retrieval — all within an isolated tenant context so data never leaks between customers.
The RAG pipeline processes uploaded documents (PDFs, Word files, plain text) into a vector store. At query time, the most semantically relevant chunks are retrieved and passed as context to an LLM, grounding every response in the customer’s actual data.
Architecture
Built on Django with a clean domain model for tenants, assistants, and knowledge bases. Each tenant gets their own document namespace. The retrieval layer uses pgvector (PostgreSQL) for embeddings, keeping the infrastructure simple and avoiding the need for a separate vector database.
AWS S3 handles document storage; SQS queues async ingestion jobs so uploads don’t block the API. The entire application is containerized with Docker and deployed on AWS ECS.
Key Technical Decisions
- pgvector over Pinecone — kept the stack simple; PostgreSQL handles both relational data and vector similarity search
- LangChain for orchestration — configurable retrieval chains allow per-tenant prompt templates and LLM selection
- Multi-tenancy at the database level — row-level security ensures strict data isolation
Key Highlights
- Multi-tenant architecture — each organisation gets isolated AI assistant instances
- RAG pipeline built on Django + PostgreSQL with vector search
- LLM integrations configurable per-tenant for custom workflows
- Deployed on AWS with Docker — horizontally scalable per tenant
Screenshots
Tech Stack
Team
Timeline
- Started
- 2024-01
- Status
- Ongoing