Codapult
DocsBlogPricingPluginsDemo
Get Codapult
Logo

Build your SaaS with AI. Keep the architecture under control.

Get Codapult

Product

  • Pricing
  • Architecture
  • Modules
  • AI platform
  • Plugins

Developers

  • MCP
  • CLI
  • Documentation
  • Launch your SaaS
  • Build a B2B SaaS

Resources

  • Blog
  • FAQ

Connect

  • Contact
  • GitHub

Compare

  • SaaS template comparison
  • Codapult vs Supastarter
  • Codapult vs Makerkit
  • Codapult vs ShipFast
  • Codapult vs SaaSBold
  • Codapult vs Gravity
  • Codapult vs Nextbase
  • Codapult vs BuilderKit

Featured on

Codapult on LaunchNestCodapult on LaunchNestbetterlaunch.cobetterlaunch.coFeatured on LaunchBuffFeatured on LaunchBuffCodapult on PeerPushCodapult on PeerPushFeatured on LaunchItFeatured on LaunchIt
© 2026 Codapult·All rights reserved·Privacy Policy·Terms of Service
Full source code · One-time purchase · Self-host anywhere
All articles

Getting Started

  • Introduction
  • Quick Start
  • Your First 30 Minutes
  • Project Structure
  • License and Permitted Use
  • Starter Profiles and Recipes
  • Product Recipes

Configuration

  • Environment Variables
  • App Configuration
  • Which Modules Should I Enable?
  • Provider Matrix
  • Capability Coverage

Database

  • Database and Provider Guide
  • Database
  • Migrations

Authentication

  • Authentication
  • OAuth Providers
  • Two-Factor & Passwordless
  • Enterprise SSO (SAML)

Ai

  • AI Runtime Architecture and Evals
  • AI Features
  • Streaming Chat
  • RAG and Semantic Search
  • Quotas and Memory

Teams

  • Teams & Organizations
  • Permissions & RBAC
  • SCIM Provisioning

Security

  • Data Retention Policy
  • Security

Deployment

  • Enterprise E2E Evidence
  • Enterprise Production Readiness
  • Deployment, Backup, and Restore Runbook
  • Deployment
  • Troubleshooting

Payments

  • Payments & Billing
  • Stripe Setup
  • LemonSqueezy Setup
  • Polar Setup
  • Payment Webhooks

Api

  • API Layer
  • tRPC
  • GraphQL

Email

  • Email
  • Email Templates

Infrastructure

  • Infrastructure
  • Self-Hosting
  • File Storage
  • Docker
  • Background Jobs
  • Terraform & Pulumi
  • Kubernetes

Ui

  • UI & Theming

I18n

  • Internationalization

Content Management

  • Content Management

Admin

  • Admin Panel

Monitoring

  • Analytics & Monitoring

Modules

  • Module Architecture
  • Waitlist
  • Audit Log
  • White-Labeling
  • Workflow Automation
  • A/B Testing
  • Welcome Page
  • Referrals
  • GDPR Export and Deletion
  • Promotions
  • Outgoing Webhooks

Plugins

  • Plugin System
  • CRM Plugin
  • Helpdesk Plugin
  • Email Marketing Plugin

Upgrading

  • Upgrading Codapult

Developer Tools

  • AI Agents & IDEs
  • MCP Server
  • Testing
  • Build Your First Feature with Codapult MCP
  • How Guard Blocks an Architectural Regression
Ai

RAG and Semantic Search

Index documents, generate embeddings, store vectors, and retrieve context for AI responses.

Codapult ships with a retrieval-augmented generation pipeline that can index product knowledge and inject relevant context into AI chat responses. It is implemented as plain TypeScript modules, so you can reuse it for search pages, copilots, helpdesk suggestions, or admin tooling.

RAG is opt-in and requires the shared AI core: set ENABLE_AI_CORE="true" and ENABLE_AI_RAG="true" only after configuring an embedding and vector provider. Indexing is organization-scoped and requires an organization administrator; search is limited to the active organization. This prevents one tenant's documents from becoming another tenant's context.

Architecture

FilePurpose
src/lib/ai/chunker.tsSplits long text into overlapping chunks
src/lib/ai/embeddings/Embedding provider adapter
src/lib/ai/vector-store/Vector store adapter
src/lib/ai/rag.tsIndex, search, delete, and prompt helpers
src/app/api/ai/index/route.tsAdmin indexing/search endpoint
src/app/api/ai/search/route.tsSemantic search endpoint

Indexing content

Use indexDocument when your app creates or updates searchable content:

import { indexDocument } from '@/lib/ai/rag';

await indexDocument({
  sourceType: 'help',
  sourceId: 'getting-started',
  title: 'Getting Started',
  content: markdownContent,
});

For larger batches, enqueue the rag-index background job so indexing does not block the user request.

Source types

TypeTypical source
blogBlog posts
helpHelp center articles
feature_requestFeature request descriptions
customProduct-specific content

Embedding providers

Embeddings use an adapter selected by EMBEDDING_PROVIDER.

ProviderEnv valueNotes
OpenAIopenaiDefault; requires OPENAI_API_KEY
OllamaollamaSelf-hosted embeddings via OLLAMA_BASE_URL

Vector stores

Vector storage is selected by VECTOR_STORE_PROVIDER.

StoreEnv valueNotes
SQLitesqlitePersists vectors in the app database
MemorymemoryUseful for tests and local experiments

Search endpoint

/api/ai/search can power semantic search UI. Use it when you want search results without generating an AI response. Use the RAG helpers directly when you need to inject matching chunks into a prompt.

Limits

Configure operational limits with AI_RAG_MAX_DOCUMENT_SIZE, AI_RAG_MAX_BATCH_DOCUMENTS, AI_RAG_MAX_CHUNKS_PER_QUERY, and AI_RAG_MIN_SCORE. The defaults are deliberately bounded for a first deployment.

Removal

The RAG pipeline can be removed separately from the basic chat UI. Remove src/lib/ai/rag.ts, src/lib/ai/embeddings/, src/lib/ai/vector-store/, the AI indexing routes, the ai_embedding table, and the related environment variables.

Streaming ChatQuotas and Memory