// search · ai

search-api-qdrant

multi-tenant with per-client isolation · 6 embedding providers · backend · SDK · WP plugin

Problem

Semantic search on a client site usually means: one vector database per project, one embedding setup, one more thing to maintain. That doesn’t scale — and most embedding APIs ship customer text to the US, which for DACH projects is a GDPR problem before the first query runs.

Approach

One platform instead of n installations: an Express core manages tenants with full per-client isolation on a shared Qdrant instance. Around it, a TypeScript SDK for custom frontends and a WordPress plugin for the most common client case. Embeddings run through a provider abstraction — six providers wired up, with a European provider as the default so the GDPR answer doesn’t depend on the client site.

Decisions

  • Multi-tenant over instance-per-client. Running one platform is cheaper than maintaining ten deployments — which means isolation has to live in the architecture, not in hope.
  • Provider abstraction over lock-in. Embedding models age fast; the provider is configuration, not architecture.
  • Rate limiting and usage tracking from day one — part of the core, not a retrofitted feature.

Status & learnings

In development, in use for my own projects. Of my SaaS experiments this is the keeper: the problem is real, recurring, and identical in every client constellation.