AI Automation

AI automation / case 07

Muriersilk AI Sales Concierge

Retrieval-grounded commerce concierge

A reusable commerce concierge that streams through CopilotKit and AG-UI, retrieves products and knowledge through a guarded hybrid pipeline, hydrates current commercial facts in the browser, preserves durable context, and hands operations to Chatwoot.

Classification
Client Delivery
Delivery status
Production deployed / live customer surface

The problem

A useful commerce assistant must help with discovery and care questions without inventing prices, recommending ineligible products, turning marketing copy into medical claims, or coupling model failures to checkout.

  1. 01

    Problem

    A useful commerce assistant must help with discovery and care questions without inventing prices, recommending ineligible products, turning marketing copy into medical claims, or coupling model failures to checkout.

  2. 02

    Ownership

    I defined the product boundary, retrieval architecture, two-run interaction contract, context budgets, catalog and safety guards, multi-tenant runtime, operator workflow, and release evidence. AI agents produced most implementation code under those constraints.

  3. 03

    Capabilities

    CopilotKit and AG-UI streaming with activity-aware customer states · Dense and BM25 sparse product retrieval fused with reciprocal rank fusion

  4. 04

    Decisions

    Keep PostgreSQL and Medusa as the commercial source of truth while treating Qdrant as a rebuildable retrieval projection. Let the model select stable product IDs and reasons, then let the browser hydrate current names, images, prices, currency, and URLs.

My role

I defined the product boundary, retrieval architecture, two-run interaction contract, context budgets, catalog and safety guards, multi-tenant runtime, operator workflow, and release evidence. AI agents produced most implementation code under those constraints.

Capabilities

  1. 01

    CopilotKit and AG-UI streaming with activity-aware customer states

  2. 02

    Dense and BM25 sparse product retrieval fused with reciprocal rank fusion

  3. 03

    Stable product ID selection followed by live Medusa hydration

  4. 04

    Parallel product and knowledge retrieval with bounded candidate sets

  5. 05

    Durable conversation state, turn packs, trace, replay, and recovery

  6. 06

    Catalog eligibility and medical-claim safety guards

  7. 07

    Chatwoot replay, assignment, internal notes, takeover, and embedded operations

Verification evidence

  • Cold local indexing covered 35 active products, 15 categories, and 125 blogs. Canonical reconciliation later covered 175 of 175 entities with zero missing, zero unexpected, zero pending outbox items, and zero unresolved dead letters.

  • The initial local generation produced 866 Qdrant points and 866 indexed vectors with a green health state.

  • A real provider smoke completed Run A, exact glove cards, Run B, a second product-card turn, and replay. The highest observed compiler input was 25,822 tokens and the highest provider prompt was 5,785.

  • Backend fresh verification passed 70 test suites and 572 tests, followed by build:chatbot.

  • Storefront verification passed 56 test files with 860 unit tests, four Playwright browser scenarios, and the production build.

  • API readiness reported acceptingInput=true and retrievalMode=hybrid.

  • The production rollout added bounded runtime telemetry and deployment gates across the chatbot service chain and storefront release path.

System arrangement

How the system works

Medusa and PostgreSQL remain commercial truth. The indexer projects products and knowledge into filtered dense and sparse recall lanes, RRF bounds the candidate set, and the planner can select only stable product IDs.

  1. 01
    SourceMedusa + PostgreSQL

    Canonical products, content, and policy

  2. 02
    CapabilityOutbox + indexer

    Incremental rebuildable projection

  3. 03
    CapabilityQdrant dense

    Nomic v1.5 via llama.cpp

  4. 04
    CapabilityBM25 / FTS sparse

    Exact terms and catalog language

  5. 05
    ControlTaxonomy filters

    Product type and material first

  6. 06
    CapabilityRRF candidate pool

    Products 10, knowledge 4 to 5

  7. 07
    ControlGuarded planner

    Selects only 1 to 3 stable product IDs

  8. 08
    OutcomeBrowser hydration

    Live price, currency, image, and URL

Stack and methods

  • CopilotKit
  • AG-UI
  • TypeScript
  • Medusa
  • PostgreSQL
  • Qdrant
  • Nomic Embed Text v1.5
  • llama.cpp
  • Chatwoot