Skip to content
Back to Projects
AI / MLAutomationFull-StackLive

Self-hosted RAG chatbot & semantic search

Question-answering chatbot and semantic search for three WordPress sites, on one VPS.

Architecture diagram: three WordPress sites, n8n ingestion, Qdrant vector store, Python search API and chat widget
sites served
3
pages and posts indexed
1,500+
visitor questions answered
3,400+

The Challenge

Three content sites needed a chatbot that answers visitor questions from their own content, plus semantic search – without paying a per-seat SaaS fee.

The Approach

n8n workflows ingest and re-index each site's content with separate tokens per site, Qdrant stores the vectors, and a Python Python search API serves the WordPress front ends, with analytics on what visitors ask. Everything runs in Docker Compose behind nginx on one VPS, with memory and CPU limits per service, so hosting stays at a few dollars a month.

Key Features

  • n8n ingestion and re-index workflows, with a separate ingestion token per site
  • Qdrant vector store on a persistent volume
  • Lightweight Python search API (multilingual MiniLM embeddings via FastEmbed) for retrieval, answer generation and analytics on visitor questions
  • Chat widget and semantic search on the live WordPress sites
  • Docker Compose behind nginx, services bound to localhost, memory and CPU limits per service
  • Prototype: an earlier RAG build with FastAPI, Qdrant, Supabase auth and a Chainlit UI, with switchable LLM providers (Ollama, Claude, OpenAI)

Results & Impact

  • Live on three WordPress sites, including SportPersonalities.com and SynergisticMan.com
  • Hosting cost of a few dollars a month instead of a per-seat SaaS fee
  • Analytics on what visitors ask, per site

Working on something where people and data meet?

AI automation, data science, psychometric validation or sports psychology – tell me what you're building.