Skip to content
Selected work

Client delivery · 2025

AI Operations Copilot

An AI operations copilot for a multi-location hospitality business - chat grounded in the company's documents, PDFs, and email, with point-of-sale context incorporated through a separate integration layer. Built on a real retrieval pipeline and agentic workflows; shown anonymized under NDA.

01 / 04 · System overview

Grounded operations assistant with a separate integration boundary

The product shell, agent workflow, document retrieval, and point-of-sale context are shown as distinct public-safe boundaries.

01 Scope

The product context behind the work.

Problem

Operational knowledge was scattered across documents, email threads, and the point-of-sale system. Answering everyday questions meant digging through files and systems by hand, and the same questions came up again and again across locations.

My contribution

  • Built the retrieval pipeline: ingest and normalize documents, PDFs, and emails into chunked, embedded, searchable content (Supabase / pgvector)
  • Implemented agentic chat workflows with LangChain + LangGraph so answers stay grounded in the company's own data, with chat sessions and auto-generated titles
  • Connected point-of-sale context through an integration layer so the copilot could be designed around operational data, not only static documents
  • Delivered multi-tenant organizations, locations, users, billing, insights, and a voice interface (speech-to-text / text-to-speech)

02 Approach

Important engineering decisions.

The product is an AI operations copilot for a multi-location hospitality business. The operating idea was simple: most operational knowledge already exists - in documents, email threads, and the point-of-sale system - it's just hard to reach. So the copilot was built around getting trustworthy answers out of the company's own data, not around a generic chatbot.

The foundation is the retrieval layer. Documents, PDFs, and emails are ingested, normalized, chunked, embedded, and stored for search (Supabase / pgvector). On top of that sits an agentic workflow built with LangChain and LangGraph, so a question is answered through grounded retrieval and controlled steps rather than a single open-ended prompt. Chat sessions are saved and auto-titled so the experience feels like a real product.

A key design thread was the point-of-sale integration layer. The goal was to let operational data sit beside static knowledge sources while keeping the public case study generic under NDA.

Around the core sit the things that make it operational rather than a demo: multi-tenant organizations and locations, user management, billing, insights, and a voice interface for speech-to-text and text-to-speech.

03 Evidence

Evidence chapters.

02 / 04 · Product journey

Grounded answer path

Document retrieval and point-of-sale context remain separate inputs to the grounded answer workflow.

03 / 04 · System boundary

Knowledge ingestion pipeline

The retrieval corpus contains documents, PDFs, and email only; point-of-sale records do not enter embeddings or match_chunks.

04 / 04 · Delivery / verification

Operational product shell around the agent

Organizations, locations, saved sessions, billing, insights, and voice make the assistant an operational product rather than a standalone demo.

04 Delivered & verified

What the public proof supports.

Delivered scope

Grounding

Retrieval-backed (RAG) answers over the company's documents, PDFs, and email, with point-of-sale context incorporated through a separate integration layer.

Reach

One copilot across documents, email, and point-of-sale, for a multi-location, multi-tenant business

Scope

Ingestion pipeline, agentic backend, point-of-sale integration layer, voice, multi-tenant orgs, and billing

Stack

Next.jsTypeScriptSupabase / Postgres (pgvector)LangChainLangGraphOpenAIVercel AI SDKExpressStripe

Reflections

  • The hard part wasn't the model - it was the data layer: clean ingestion, chunking, metadata, and grounding so answers stayed trustworthy.
  • The point-of-sale path was framed as an integration layer so operational data could sit beside static documents without exposing client or vendor identity.

Next step

Have a similar project?

If this looks close to the product work you need, book a short call and I will help scope the next step clearly.

Book an intro callopens in a new tab