Customer Support Platform

A multi-tenant customer support platform integrating knowledge-search chat with inbox and ticket management.

Challenge

Traditional customer support required enormous effort for inquiry handling, with knowledge siloed to individuals and information fragmented across channels. The design needed multi-tenant data isolation per workspace while achieving RAG-based automated responses.

Solution

Integrated knowledge-search chat and ticket management using Next.js 14 + Supabase (pgvector). Implemented model switching, tenant isolation through RLS, an inbox, CRM, and dashboard.

Result

Built a support platform where teams can handle inquiries, search knowledge, manage customer data, and review reports in one place.

Team

1 member, 2 months

Design, implementation, infrastructure, operations

Role

Handled UI design, knowledge search, inbox, permissions, and infrastructure.

Led frontend (Next.js), backend (Supabase Edge Functions), and infrastructure (Terraform/GCP) end-to-end.

Tech Stack

FrontendNext.js 14 (App Router) / TypeScript / Tailwind CSS / DaisyUI / shadcn/ui
StateJotai / TanStack React Query
AI / LLMVercel AI SDK / OpenAI / Gemini / Claude / Groq / xAI / DeepSeek
RAGLangChain / pgvector / OpenAI Embeddings
DatabaseSupabase (PostgreSQL / Auth / Edge Functions / RLS)
PaymentStripe
InfrastructureDocker / GCP (Cloud Tasks) / Terraform
CI/CDGitHub Actions

Key Features

01

Knowledge-search chat: ingest URLs, PDFs, and text, then retrieve relevant information during support conversations

02

Multi-LLM support: Switch between OpenAI / Gemini / Claude / Groq / xAI / DeepSeek through a unified interface

03

Inbox: Zendesk-like ticket management. Multi-channel support for chat, email, and API

04

Multi-tenancy: Physical data isolation via RLS, membership and role management

05

Dashboard: Graph visualization, filtering, and reporting for various data

06

Platform management: Cross-workspace management screen for super users

Technical Highlights

RAG Pipeline Design

Built an end-to-end pipeline: document ingestion → chunk splitting → vectorization → similarity search → response generation. Implemented duplicate detection via content_hash and cross-tenant leakage prevention via workspace_id filtering.

Multi-tenant × RLS Security

All core tables have workspace_id with Supabase RLS physically isolating data between tenants. Achieved two-layer protection with Middleware auth checks and client-side role checks.

Async Processing via Edge Functions

Moved heavy processing into Supabase Edge Functions so the web app stays responsive.