Skip to content
Stealth Startup / Jul 2025 — Oct 2025 (3 months)

AI Chatbot

A retrieval-augmented AI assistant for a B2B SaaS analytics platform, built from an empty repo to production.

ai-chatbot
AI Chatbot

01 / Overview

Role: Architect / primary owner - built the standalone AI microservice from scratch, plus extensive backend ingestion and frontend UX work

Designed and built the retrieval-augmented AI assistant embedded in a B2B SaaS analytics platform, including a standalone Python microservice (FastAPI) built from scratch to handle the query/agent layer, alongside extensive work on the Kotlin ingestion pipeline and the Vue frontend. Documents, portfolio holdings, and contact data are ingested and chunked by the backend into tenant-scoped data stores; queries are handled by a Gemini-powered agent (via Google's Agent Development Kit) that calls a retrieval tool backed by Vertex AI Discovery Engine, applying access-control filtering and recency boosting before grounding its answer with cited sources. The architecture evolved significantly over its life - from an initial chunk-storage RAG approach to the current agent/tool-calling model - while adding session persistence, a feedback loop (response ratings, admin review tooling), a dedicated evaluation framework with baseline test questions to catch regressions, and substantial reliability and performance work (caching, retry handling, polling for long-running queries). Also owned the chat UX itself - source citations, markdown rendering, minimisable widget, loading states.

  • Built the RAG/agent microservice from an empty repo to production, solo

  • Architected the pivot from simple chunk-based retrieval to an agent/tool-calling model (Switch to Agent)

  • Multi-service architecture: Kotlin ingestion pipeline → tenant-scoped vector/search data stores → Python agent service → Vue chat UI

  • Built a dedicated evaluation framework with baseline test questions to catch quality regressions

  • Feedback loop: response ratings + admin review tooling for continuous quality improvement

  • Reliability/performance work: caching, retry handling, polling for long-running queries

02 / Problem

Users of a B2B analytics platform needed to ask questions across their documents, portfolio holdings and contacts and get grounded, cited answers, without seeing data from other tenants.

03 / Decisions

I moved the architecture from simple chunk-based retrieval to an agent/tool-calling model, where a Gemini agent (via Google's Agent Development Kit) calls a Vertex AI retrieval tool that applies access-control filtering and recency boosting. To make changes like that safe, I built an evaluation framework with baseline questions to catch regressions.

04 / Outcome

I took the Python agent service from an empty repo to production, alongside the Kotlin ingestion pipeline into tenant-scoped data stores and the Vue chat UI with source citations. Users rate responses, and admins review them through dedicated tooling to improve answer quality.

05 / Stack

  • GeminiAI
  • NuxtFrontend
  • KotlinBackend
  • PythonBackend
  • VueFrontend
  • GCPDevOps
  • FastAPIBackend
  • Vertex AIAI

06 / Gallery

Next projectGlasgow Retina →