Skip to content
 
 

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sift AI

Multi-tenant semantic search SaaS for product catalogs.

Sift turns a product catalog (CSV or JSON) into a hosted semantic search and conversational RAG endpoint, scoped per tenant. Built for e-commerce stores that want intelligent product search and discovery without standing up their own vector infrastructure.

Finalist (top 5 of 30 teams, 100+ participants) at the IE Tech Venture Bootcamp 2026.

What it does

  • Catalog ingestion: Tenants upload CSV or JSON product catalogs. Sift parses, normalizes, deduplicates, and generates per-product embedding text.
  • Semantic search: OpenAI embeddings for vectorization, Qdrant for nearest-neighbor retrieval, per-tenant collection isolation.
  • Vision-assisted enrichment: GPT-4o describes product images to enrich text representations for catalogs with thin written copy.
  • Conversational RAG: /chat maintains conversation context, expands queries, and returns cited product matches.
  • Analytics: Tracks query volume, top searches, click-throughs, and tenant-level retrieval performance.

Architecture

apps/
├── api/        FastAPI backend (Python 3.12, uv-managed)
│   ├── routes/     tenants, jobs, ingest, search, products, chat, analytics, track
│   └── services/   ingestion, openai_service, qdrant_repo, supabase_repo,
│                   vision_service, conversational_rag, query_expansion, parsers
└── web/        Next.js frontend (TypeScript)

Stack

  • API: FastAPI, Python 3.12, uv for dependency management
  • Frontend: Next.js, React, TypeScript
  • Embeddings: OpenAI text-embedding-3-small
  • Vector DB: Qdrant (per-tenant collections)
  • Tenant data: Supabase (Postgres)
  • Vision: OpenAI GPT-4o
  • File storage: Supabase Storage for uploaded catalogs

API surface

  • POST /tenants — Create a tenant
  • POST /ingest — Upload a CSV or JSON catalog (kicks off async job)
  • GET /jobs/{id} — Poll ingestion status
  • GET /search?q=... — Semantic product search
  • POST /chat — Conversational RAG over the tenant's catalog
  • GET /products — Tenant product list
  • GET /analytics — Search and conversion metrics
  • POST /track — Client-side event tracking

Tenant isolation

Every request is authenticated via an API key that resolves to a tenant_id. All Qdrant operations scope to per-tenant collections. All Supabase rows enforce tenant_id constraints. See apps/api/test_tenant_isolation.py for the isolation contract.

Origins

Sift evolved from SiftOps, a WordPress-native RAG application that won the PwC x Lovable Buildathon. The v1 indexed open-web WordPress content via the WP REST API with local Ollama inference for privacy-first deployment.

The pivot shifted the use case (WordPress open-web content → tenant-scoped e-commerce catalogs) but kept the architectural principles: per-source isolation, grounded retrieval with citations, and an API designed for someone else to integrate.

Recognition

  • Finalist (top 5 of 30 teams) at the IE Tech Venture Bootcamp 2026, 100+ participants
  • PwC x Lovable Buildathon Winner (predecessor, SiftOps v1, selected from 100+ startup teams)

Running locally

See apps/api/README.md and apps/web/README.md for service-level setup.

# API
cd apps/api
uv sync
uv run uvicorn app.main:app --reload

# Web (separate terminal)
cd apps/web
npm install
npm run dev

About

Sift AI - Multi-tenant semantic search SaaS

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages