The problem
The client is a direct-to-consumer apparel brand with seasonal peaks around product drops and holidays. Their support team found that most contacts were the same few questions: where is my order, how do I return this, can I exchange for a different size. Answering each one meant looking up the order in two systems. During peaks, response times stretched to days and the brand hired temporary staff every season. Their previous FAQ chatbot could only link to help articles, so customers learned to skip it.
What we actually did
Verified, order-aware conversations
The chatbot verifies the customer through their order number and email, or through their logged-in session, before discussing any order. Once verified, it calls tools that read live data from the order management system and carrier tracking, so "where is my order" gets a specific answer with the latest tracking event rather than a generic shipping policy.
Completing returns and exchanges, within policy
The brand's return and exchange policy was encoded as rules, not left to the model: return windows, final-sale items, condition requirements. When a request is eligible, the chatbot creates the return in the order system and sends the label. For exchanges, it checks live inventory for the requested size and reserves it. Anything outside policy, such as a request for an exception, goes to a human agent.
Grounded answers for everything else
General questions about sizing, materials, and care are answered from the brand's own product data and help center through retrieval, with the source shown. If the chatbot can't find an answer, it says so and offers a handoff rather than guessing.
Challenges and tradeoffs
- Peak traffic. Product drops create sudden traffic spikes. Order lookups are cached briefly and the system degrades gracefully to status-only answers if the order system is slow.
- Handoff quality. When a human takes over, they see the full conversation, the verified order, and what the chatbot already tried, so customers never repeat themselves.
- Measuring real resolution. We counted a contact as resolved only if the customer didn't contact support again about the same order within seven days, not merely when the chat ended.
Results
The chatbot now fully resolves 63% of order status, return, and exchange contacts, measured with the seven-day recontact rule. Blended cost per contact, including inference, platform, and agent time, fell 71% compared with the previous all-human model, and the brand handled its next holiday peak without seasonal hires. Customer satisfaction on resolved chats rose nine points, mostly because answers became immediate.
What we'd do differently
We would define the seven-day recontact metric before launch, not after the first month. Early reports based on chat completion overstated resolution, and a stricter metric from day one would have saved a round of recalibration.