Back to Portfolio

Ask Ownex Labs

A public, anonymous AI chatbot that answers any question about Ownex Labs, our projects, team, services, and how to get in touch, grounded strictly in our own real content. It replaces digging through pages or waiting on a contact form with an instant, conversational answer, and knows what it does not know instead of guessing.

AIConversational InterfacesMarketing
Ask Ownex Labs

Ask Ownex Labs is a public, anonymous AI chatbot that answers any question about Ownex Labs: our projects, team, services, tech stack, and how to get in touch, grounded strictly in our own real content, never the model's imagination. It replaces the usual dig-through-the-site-or-fill-out-a-form experience with an instant, conversational one, and it knows what it doesn't know: if something isn't in our content, it says so and points to a human instead of guessing.

Key Outcomes

Zero

hallucinated facts on team size or project count

Instant

token-by-token streamed answers

24/7

no queue, no waiting on a reply

Voice + text

built-in speech-to-text input

~$0/mo

inference cost at current traffic

Overview

  • Industry: AI / Conversational Interfaces / Marketing

  • Platform: Standalone public web app, no login (ask.ownexlabs.com)

  • Users: Prospective clients, job seekers, and site visitors

  • Stack: Gemini 3.1 Flash-Lite + gemini-embedding-001, Postgres/pgvector, Next.js 16, Vercel AI SDK, Deepgram, Vercel + Supabase

Background

Visitors landing on ownexlabs.com had to hunt across pages to answer basic questions, like how big the team is, whether we had built anything like their idea, or what something costs, or fall back to a contact form and wait for a reply. Meanwhile the team was fielding the same handful of questions by hand, over and over.

We wanted something that could answer instantly and honestly, and turn the moment someone is actually interested into a captured lead instead of a bounce. So Ask Ownex Labs was built as its own standalone, anonymous chat product: no login, grounded strictly in real company content, with hard numbers like team size and project count pulled from a live database instead of left to the model to recall.

It's deliberately narrow. It isn't a general-purpose assistant: it won't write code, translate text, or answer trivia. It only knows about Ownex Labs, but it knows that cold, and it says so plainly when a question falls outside what it can speak to.

  • Give any visitor accurate, conversational answers about the company
  • Guarantee zero hallucination on hard facts like team size and project count
  • Stay strictly in scope: no code help, no trivia, no general chatbot behavior
  • Catch genuine buying intent and offer to collect a name and email without being pushy
A chatbot that only knows about Ownex Labs: it answers with confidence, or it says so and points to a human.

The Challenge

Business Challenges

  • Deciding how strict "in scope" should be: answer anything about Ownex Labs, including capability questions like "do you know React?", but refuse to do work for the visitor
  • Getting the tone right: banned agency clichés like "cutting-edge" and "leverage" in favor of a warm, brief, contraction-using voice
  • Deciding not to publish pricing at all: any cost question is treated as buying intent and routed to lead capture instead of a number

Operational Pain Points

  • Keeping answers accurate as the real site changes, backed by a consistency-check script over the content source files
  • Guaranteeing exact numbers like team size and project count can never drift from what is actually true
  • Avoiding a pushy lead form: it only appears on confirmed buying intent, and only once per conversation

Technical Challenges

  • Embedding dimensionality mismatch: Google's embedding model outputs 3072 dimensions, but the Postgres vector index caps at 2000, so vectors are truncated to 768 and re-normalized
  • Stripping a subtle "this is AI" tell (stray em dashes creeping into replies) from both the system prompt and the output stream
  • Serverless Postgres quirks: Supabase's pooled connections don't support prepared statements, and the free tier auto-pauses after 7 days idle
  • Voice input felt slow from a per-press auth token fetch, fixed by pre-warming and caching the token and running it in parallel with the mic-permission request

The Solution

Every question runs through a retrieval-augmented generation pipeline. The visitor's message is embedded and matched against a vector database of curated content chunks (company, project, and service write-ups) for descriptive detail, while hard facts like team size, project count, and contact info are pulled directly from a structured database table so they're never left to the model's judgment. Both are stitched into a single grounding block and handed to Gemini 3.1 Flash-Lite with a strict system prompt, and the answer streams back token-by-token while a lightweight two-stage check decides whether to surface the lead-capture form.

Core Architecture

FrontendNext.js 16 chat UI with optional voice input
BackendSingle serverless API route via the Vercel AI SDK, keys and DB never reach the browser
Retrievalpgvector semantic search, top 6 chunks per question
FactsTeam size, project count, and contact info from a structured Postgres table
GuardrailsSystem prompt enforces topic scope, never guess, never quote pricing
SafetyRate limiting, input-length caps, prompt-injection resistant handling
GenerationGemini 3.1 Flash-Lite streams the reply token-by-token
VoiceDeepgram speech-to-text with a pre-warmed, cached auth token

Implementation Process

Implementation process

Scope & Content Sources

Decided what the bot should and shouldn't answer, then gathered and structured real company, project, and team content into a curated knowledge base.

Implementation process

Retrieval & Knowledge Layer

Split that content into an exact-facts database and a semantically searchable chunk store, so hard numbers and descriptive answers each come from the right source.

Implementation process

Chat Experience

Built a streaming chat UI with voice input, plus a two-stage lead-detection flow that only surfaces a contact form on genuine buying intent.

Implementation process

Guardrails, Testing & Launch

Wrote and tightened the system prompt against a test set covering scope refusal, exact-number accuracy, pricing deflection, and prompt-injection attempts, then deployed to Vercel and Supabase.

Results & Impact

A live, public chatbot built to answer honestly about Ownex Labs, or say so and hand off to a human, instead of guessing.

Visitor Experience

  • Instant token-by-token streamed replies
  • 24/7 answers, no waiting on a contact form

Trust & Accuracy

  • 0 hallucinated hard facts, team size and project count are DB-backed
  • In-conversation lead capture, offered once on confirmed intent only

Technical & Cost

  • ~$0/mo inference and embedding cost at current traffic
  • 20 req/min per-visitor rate limit keeps it abuse-resistant

Similar Success Stories

You want Similar Results for your Website/Application?

Let's create measurable impact together.

Ask us anything