Skip to main content
Generative AI Solutions — Case Study

Virtual AI Sales Assistant for E-commerce

The client ran a Shopify-based direct-to-consumer brand with roughly seventy SKUs across two product categories and a substantial paid acquisition budget. Their analytics showed a healthy top-of-funnel but a cart abandonment rate above the category benchmark and a long tail of pre-purchase questions hitting email support, often with twelve-hour response times. By the time support replied, the buying intent had cooled.

+25%conversion rate
+18%average order value
$450kmonthly sales lift
<3sresponse time
Virtual AI Sales Assistant for E-commerce
Category

Generative AI Solutions

Industry

Retail/E-commerce

Timeline

10 weeks from kickoff to full traffic rollout

Team size

4 specialists

Project Overview

The full story

The specific user problem was that the product detail pages did not surface the answers customers actually needed before buying. Sizing for one category and ingredient sensitivity for the other were the two most common pre-purchase questions, and both required a back-and-forth that the existing support channels could not handle in the moment. The brand had tried a generic chatbot from a marketing tool vendor, which answered questions correctly less than half the time and was disabled within a month.

We built a product-aware sales agent that grounded every response in the live catalog, the existing knowledge base, and the customer’s session context including cart contents and browsing history. The agent recommended upsells only when an existing cart item created a natural pairing, scored against historical attach data so the suggestions did not feel arbitrary. Order follow-up emails were generated per customer rather than from a static template.

What shipped was an in-store chat surface that handled pre-purchase questions in seconds with citation back to product pages, plus a post-purchase email engine that adapted tone based on order value and lifecycle stage. The agent escalated to human support only when it lacked confidence, with the full conversation context attached so the support agent did not start cold. Attach rate and reorder rate moved in the same quarter and the brand reallocated paid budget against the new conversion baseline.

The Problem

A healthy top-of-funnel was leaking out at the product page — sizing and ingredient questions had no in-moment answer.

01Friction point

Cart abandonment was running above the category benchmark with sizing and ingredient questions topping support inbox volume.

02Friction point

Email support responded in twelve-plus hours, by which point buying intent had cooled and the session was lost.

03Friction point

A prior generic chatbot answered correctly under half the time and was disabled within a month of launch.

04Friction point

Upsell suggestions in the cart were rule-based and ignored what was already in the cart, leading to low attach rates.

05Friction point

Post-purchase emails were template-driven, so high-LTV customers got the same nurture flow as one-time discount shoppers.

Our Approach

How we structured the engagement

Grounded the agent in live catalog and session context so every answer was traceable to a real product page or policy.

  1. Phase 01Weeks 1-2

    Discovery

    Audited six months of support tickets to taxonomize pre-purchase questions, sampled fifty session recordings, and measured drop-off points on the product detail pages. Output: a question taxonomy, a confidence threshold for human escalation, and an attach-rate model from order history.

  2. Phase 02Weeks 3-4

    Architecture

    Designed a RAG agent grounded in three sources — the live Shopify catalog, the existing help center, and a session context store containing cart and browsing history. Picked Postgres with pgvector for retrieval over a managed vector database to keep tenant scoping simple.

  3. Phase 03Weeks 5-8

    Build

    Shipped the agent, the session context store, and the upsell scorer in parallel. The upsell scorer used a gradient-boosted model trained on the historical attach data with cart contents as features. Built the email engine on top of the same grounding sources so post-purchase tone stayed consistent with pre-purchase.

  4. Phase 04Weeks 9-10

    Launch

    Rolled out to a single subdomain at fifty percent traffic split for two weeks, then ramped to one hundred percent after the conversion lift held outside the noise band. Tuned the escalation threshold weekly based on support agent feedback on escalated conversation quality.

System Architecture

What we built, component by component

  1. 01

    Catalog sync

    Pulls Shopify product, variant, and inventory data into a normalized store with change detection on every webhook.

  2. 02

    Knowledge index

    Embeds help center and policy content into pgvector with per-section metadata for grounded retrieval and citation.

  3. 03

    Session context store

    Tracks cart contents, browsing history, and prior interactions per visitor with a thirty-day rolling window.

  4. 04

    Sales agent

    LLM with tool access to the catalog, knowledge index, and session store, gated by a confidence threshold for escalation.

  5. 05

    Upsell scorer

    Gradient-boosted model on historical attach data that ranks pairings against the current cart and surfaces top suggestions.

  6. 06

    Lifecycle email engine

    Generates post-purchase emails per customer using the same grounding sources for tone and content consistency.

Data Flow

A visitor opens the storefront and the session context store begins tracking cart and browsing events. When the visitor asks a question, the sales agent retrieves grounding context from the catalog and knowledge index, generates a response with citation, and either escalates or routes to the upsell scorer for in-cart suggestions. The email engine consumes the same context for post-purchase outreach.

Catalog sync
Knowledge index
Session context store
Sales agent
Upsell scorer
Key Decisions

The trade-offs we made and why

Decision 01Lead trade-off

Chose pgvector over a managed vector store

Tenant-scoped retrieval with row-level security was simpler in Postgres than in a separate vector service, and the retrieval volume per tenant did not justify a dedicated cluster. Operational simplicity won over a small recall improvement.

Decision 02

Built a separate upsell scorer rather than asking the LLM to pick

LLM-picked upsells looked plausible but did not match historical attach behavior. A gradient-boosted model on real attach data grounded the recommendations in what customers actually bought together, and the agent presented the picks rather than choosing them.

Decision 03

Routed escalation with full conversation context attached

Cold escalations forced support agents to restart the conversation, which customers experienced as a step backward. Passing the full transcript and the agent’s reasoning gave the support team a head start and reduced escalated-ticket resolution time.

Decision 04

Single grounding layer across chat and email

A separate template system for post-purchase email would have drifted from the live catalog within weeks. Reusing the same retrieval layer kept tone, product detail, and policy references in lockstep across surfaces with no extra maintenance burden.

Outcomes

What changed for the client

conversion rate

Measured against the holdout traffic split over the two-week ramp period, then sustained over the following quarter.

average order value

Attributable to the upsell scorer surfacing relevant pairings in-cart, with attach rate moving on top SKUs.

monthly sales lift

Incremental monthly revenue attributable to the agent and email engine across the rollout quarter.

response time

Median end-to-end response time from user question to grounded answer with citation on the storefront chat surface.

Tech Stack

The tools behind the system

Built with a deliberate stack chosen for production reliability and operational velocity.

5 componentsProduction-grade
LLMsRAGShopify APIReact.jsFastAPI
What we’d carry forward

Lessons learned from the build

01Lesson

Grounding the agent in the live catalog rather than a snapshot was the single change that earned customer trust. Stale answers about inventory or pricing broke trust faster than wrong answers about policy, so we made catalog freshness the highest-priority signal.

02Lesson

Confidence-based escalation needed weekly tuning during the first month. The threshold that read well on synthetic queries was too eager on real traffic and produced too many escalations. Watching the escalation queue daily during ramp was time well spent.

03Lesson

Post-purchase email turned out to be where the LTV lift came from. We had scoped it as a secondary surface and it produced more attributable revenue per impression than the storefront chat did. Next time we would budget for it equally from week one.

Related Services

Similar delivery work usually starts in these service areas

If you are exploring a similar product, workflow, or implementation challenge, these are the service tracks that usually fit best.

Industry Context

Where this project sits in the bigger market picture

AI use cases for retail, commerce, personalization, pricing, and customer support.

Similar Project?

Build a result-driven AI product with a team that has shipped before

If you are exploring a similar product, workflow, or AI use case, we can help scope the right architecture, delivery model, and first milestone.

Start with clarity

Have an AI idea, messy workflow, or product vision? Let's make it buildable.

Bring the problem. We'll help shape the product, define the architecture, and show the fastest path to a serious first version.

  • A practical first roadmap in the discovery call

  • Architecture, timeline, and delivery options in plain English

  • Security, scalability, and reliability discussed upfront

Model registry

softus-rag-v4.2

live

187ms

Latency

128k

Context

$0.004

Cost / req

Evaluation suite

Faithfulness94%
Answer relevance97%
Citation accuracy99%

Deploy pipeline

prod / canary 25% — healthy