The product
Turn a website into an AI assistant.
The Chat Company lets businesses give their website an AI chatbot without building their own AI infrastructure. Add a website, select the content, customize the experience, and install it with one script.
End-to-end
Designed and built from scratch.
I owned the entire product — product design, frontend, backend, AI integration, RAG, vector search, embeddable widget, visual customizer, analytics, authentication, multi-tenancy, support, SEO, and production delivery.
Knowledge
Start with what the business already knows.
Instead of asking businesses to manually build a knowledge base, the platform maps their website, lets them select the relevant pages, scrapes the content, and turns it into searchable AI knowledge.
RAG
The chatbot answers from the website, not from guesswork.
I built the RAG pipeline from content chunking and embedding generation through tenant-filtered vector search and contextual prompting. Relevant knowledge is retrieved for each question before the model generates its response.
Tenant-filtered vector search
Distribution
One script. Any website.
The chatbot is packaged as a standalone JavaScript widget with bundled CSS, public configuration loading, CORS support, session tracking, and streaming chat. Customers don't need to rebuild their website or maintain another backend.
Customization
Make the chatbot feel like part of the brand.
I designed and built a live visual customizer with 56 reusable templates and controls covering appearance, header, messages, footer, empty state, position, and popup behavior.
Analytics
See what visitors are asking.
The dashboard tracks sessions, messages, tokens, unique users, RAG usage, and conversation history, with visual analytics and conversation replay.
Architecture
One platform. Isolated customer knowledge.
Website identity is carried throughout configuration, vector embeddings, retrieval, sessions, and APIs. Every protected operation checks ownership so one customer's knowledge remains isolated from another's.
Support
The product also supports the people using it.
I built a realtime support system where customers can create tickets, communicate with admins, track ticket state, and receive realtime updates.
Engineering
The interesting part was packaging AI into a product.
The challenge wasn't simply connecting an LLM. It was building the systems around it — ingestion, retrieval, tenant isolation, token control, failure handling, streaming, configuration, analytics, and a distribution layer that works outside the main application.
The result
An AI chatbot anyone can actually install.
The finished platform turns an existing website into a branded, knowledge-grounded AI assistant through a simple flow: crawl the site, index the knowledge, customize the widget, and embed it with one script tag.
Inside the product
A closer look at the AI platform.
A selection of the onboarding flow, website crawler, knowledge base, live chatbot customizer, embed experience, analytics dashboard, and support system.
Features
Website ingestion
Firecrawl maps the domain, users pick pages, content is scraped to markdown, then chunked, embedded, and stored. Mapping and scraping run as a state machine with retries and user-facing errors.
Website-grounded RAG
Sentence-aware chunks (~500 characters, 50 overlap) become text-embedding-3-small vectors in a Convex HNSW index. Each question retrieves top-5 tenant-filtered chunks, then gpt-4o-mini streams a grounded reply.
One-script embed
A Vite IIFE widget (chatbot.js with bundled CSS) loads public config, streams chat, and tracks sessions. Install is a single script tag on WordPress, Shopify, or custom HTML.
Live visual customizer
56 templates and controls for colors, typography, bubbles, launcher, position, and popup. Zustand drives a split-pane preview; config persists to Convex.
Conversation analytics
Sessions, messages, tokens, unique users, RAG chunks, and conversation replay. Sessions use localStorage plus a 30-day cookie, with a fingerprint fallback.
Company knowledge
Name, industry, products, description, model config, scraped pages, embedding stats, and manual knowledge injection, validated with Zod.
Multi-tenant isolation
Website identity is carried through ownership, embeddings, vector search, sessions, messages, and APIs so one customer's knowledge never crosses into another.
Clerk authentication
Sign up, login, protected dashboard routes, public embed routes, and ownership checks on Convex operations.
Realtime support
Tickets with assignment, open / in-progress / resolved states, realtime messages, unread counters, and customer/admin roles.
Outcomes
- End-to-end SaaS product
- Product and UI/UX design
- Website crawling with Firecrawl
- RAG pipeline and sentence-aware chunking
- OpenAI embeddings and HNSW vector search
- Tenant-filtered retrieval
- Streaming AI chat
- Vite IIFE embeddable widget
- Single-script installation
- 56 chatbot templates
- Live visual customizer
- Conversation analytics and replay
- Realtime support
- Multi-tenant architecture
- Clerk authentication and Convex backend
- Technical SEO