Bamboo India customer support, connected to Shopify
Multi-channel agentic support with live Shopify order context, policy-aware responses grounded in brand documents, and a clean handoff to a human agent when confidence is insufficient.
#BI-20491 is out for delivery, ETA tomorrow by 7 pm. Returns on partial items are accepted within 30 days of delivery under our return policy. Shall I pre-initiate a partial return once you receive it?Where the pain concentrates
The real problem was not throughput; it was context. Live order state, current policy and a clean human handoff do not come free at channel speed.
Channel sprawl
WhatsApp, Meta messaging, web chat. Each with its own quirks, each with its own queue.
Order context lived in Shopify
Status, fulfilment, returns, refunds. Every answer needed a live read.
Policy drift
Return terms, refund terms, shipping FAQ. The authoritative source changed; the agent script lagged.
Escalation handoff
A human agent picking up after the bot had to inherit the full context, not restart the customer.
What support leaders actually said
One reasoning layer across three channels
The brief was agentic support with live commerce context and brand-safe policy answers, not a bigger call-centre. The hard part was state: order status, fulfilment, returns and refund terms all change by the hour, and the authoritative answer lives in two different systems.
ScroBits built the full stack: a channel normaliser for WhatsApp, Meta and web chat; GPT-4o intent and reasoning on LangGraph; live Shopify GraphQL reads with webhook updates; a Pinecone/ChromaDB policy knowledge base; confidence-scored responses; and a clean handoff to a human agent with full context attached.
What runs today is one reasoning layer serving three channels, with order state read live and policy cited, and human agents freed up for the conversations that actually need them.
Order, fulfilment, returns and refunds via Shopify GraphQL at the moment of the question. Policy via RAG over the brand's own documents. Human handoff with the full conversation intact.
Five building blocks, one grounded conversation
Each block has a specific job in the Message -> Normalise -> Reason -> Fetch -> Respond -> Handoff flow across three channels.

Multi-channel orchestration
LangGraph coordinates the workflow across WhatsApp, Meta and web chat. A channel normaliser handles input quirks so the same reasoning layer serves all three.
Live Shopify order context
Shopify GraphQL Admin API for live reads of order, fulfilment, returns and refund status. Webhooks for changes. Answers are grounded in the state of the order at the moment of the question.
Policy knowledge base with RAG
Return, refund, shipping and ToS embedded in a vector store. When policy says 30 days, the bot's reasoning uses 30 days, not a model's guess at an industry norm.
Scoped data access
Order lookups scoped to the asking customer. Policy lookups scoped to the brand. The data boundary is defined in the workflow, not inside the model's prompt.
Confidence check + handoff
Every response confidence-scored before it leaves the bot. Low confidence routes to a human with full conversation, order state and policy citations attached. The customer does not restart.
Message
Customer writes in WhatsApp, Meta or web chat.
Normalise
Channel normaliser handles the input shape.
Intent
GPT-4o parses the question and classifies it.
Order
Shopify GraphQL returns live state for order-related questions.
Policy
RAG returns the relevant terms with citations.
Respond
Agent drafts a policy-aware answer grounded in live order context.
Handoff
High confidence replies; low confidence escalates with full context.
Before, after, change
Live in production at Bamboo India across WhatsApp, Meta and web chat. One reasoning layer; human agents freed up for the conversations that need them.
| Dimension | Before | After | Change |
|---|---|---|---|
| Channels covered | Human agents per channel | Agentic across three channels, one reasoning layer | Unified |
| Order context in replies | Agent looks up in Shopify | Live GraphQL inside the response | Grounded |
| Policy grounding | Agent memory and scripts | RAG over the brand's own policies | Current |
| Escalation handoff | Customer restarts with human | Human picks up with full context | Seamless |
| Scaling response | Hire more agents | Add workflow nodes | Elastic |
Extending the agent beyond reactive
Proactive outbound updates
Shipped, out for delivery, delivered, through the channel the customer prefers.
Returns automation
Initiate, approve and dispatch pickup for routine cases without a human in the loop.
Multi-brand deployment
Pattern for D2C groups running several Shopify stores.
Sentiment-aware escalation
A rising-frustration customer reaches a human before the policy answer is even composed.
Three principles we are taking into the next engagement
Live beats cached when state matters
An order status cached five minutes ago is a wrong answer waiting to be sent. Live GraphQL inside the response is the only safe design for state-dependent replies.
Policy belongs in retrieval, not prompts
When the policy changes, the retriever updates and every reply follows. Prompts hard-coding policy numbers rot the day the terms shift.
The handoff is the product
A customer who restarts their story with a human has not been helped by the bot. Context passed cleanly to the agent is the difference between a bot and a channel.
Running a D2C store and want agentic support that stays grounded?
ScroBits builds the channel integration, the Shopify data layer, the policy RAG and the escalation path. Two weeks to a scoped pilot.