Case study · AI-powered knowledge assistant

VenueIQ

A RAG application that answers questions from a user-defined website knowledge base, with monitoring for usage, latency, and cost.

PythonFastAPILangChainChromaOpenAINext.js
VenueIQ evaluation dashboard tracking AI requests, latency, tokens, and cost

Overview

VenueIQ is a retrieval-augmented generation (RAG) application that allows users to ask questions about website content through a conversational interface. I built the system to retrieve information from a user-provided knowledge base and generate answers grounded in that content.

Role. Full-stack development and AI integration

The problem

Finding specific information on a website often requires navigating multiple pages and manually searching for relevant details.

General-purpose AI assistants can also produce plausible answers that aren't supported by the website content a user needs. VenueIQ addresses both problems by connecting conversational search to a defined knowledge source.

The solution

I developed a RAG chatbot that uses user-provided website links as the basis for its knowledge base.

  • Knowledge ingestion

    Accept website links and process their content into searchable material.

  • Semantic retrieval

    Generate embeddings and use Chroma to find relevant content for a question.

  • Grounded responses

    Use retrieved context with OpenAI to generate answers based on the supplied knowledge.

  • Conversational interface

    Let users ask natural-language questions instead of manually searching pages.

  • Usage monitoring

    Track AI usage, request latency, and estimated API costs.

Engineering

The architecture separates knowledge ingestion from question answering, with Chroma providing persistent vector storage for retrieval.

Knowledge ingestion
  1. Website URLs

    Links supplied by the user

  2. Ingestion pipeline

    Extract content → Split into chunks → Generate embeddings

  3. Chroma vector store

    Persist searchable vector representations

Question answering
  1. User question

    Natural-language query in the Next.js chat UI

  2. Semantic retrieval

    Find relevant knowledge-base content in Chroma

  3. FastAPI + LangChain + OpenAI

    Pass retrieved context to the language model

  4. Chat response

    Answer grounded in retrieved content

The frontend uses Next.js, while FastAPI exposes the backend chat functionality. LangChain coordinates retrieval and model interaction, and Chroma stores the searchable knowledge representations.

Technical decision

Retrieve first. Generate only from retrieved context.

A general-purpose model will invent details that are not on the site. I split ingestion from answering: URLs become chunked embeddings in Chroma, and each question retrieves those chunks before OpenAI sees them. The model is instructed to answer only from that context. Monitoring usage, latency, and estimated cost made the operational cost of that extra retrieval step visible.

Challenges

Reducing AI hallucinations

Language models can confidently generate information that isn't supported by their sources. I designed the chatbot to retrieve relevant context and instructed the model to answer only using the provided knowledge base. This reduces reliance on unsupported model knowledge, although it cannot guarantee every answer is correct.

Building a reliable ingestion-to-retrieval pipeline

The chatbot depends on successfully processing website content and retrieving relevant chunks. I worked with content extraction, chunking, embeddings, and persistent Chroma storage to connect ingestion with the chat workflow.

Handling external AI service failures

During development, I encountered API configuration, rate-limit, and quota errors. These highlighted the importance of validating configuration, handling upstream failures, and monitoring usage when building applications around external AI services.

Balancing usefulness and cost

Each question can trigger retrieval and model inference. I added monitoring for usage, latency, and estimated cost to make the system's operational behavior more visible.

Outcome

  • Built a working RAG chatbot using a user-defined website knowledge base.
  • Enabled natural-language access to ingested website content.
  • Integrated semantic retrieval with LLM-based response generation.
  • Added monitoring for AI usage, latency, and estimated costs.

Engineering takeaway

VenueIQ demonstrates practical AI engineering beyond a basic API integration: knowledge ingestion, vector search, context-grounded generation, error handling, and observability.

Project navigation

All case studies

Back to all projects