Customer Support AI Chatbot Using Azure OpenAI
Slashed support ticket volume 90%, eliminated a year's backlog
Problem
Customer support teams are often drowning in support tickets, most of which ask the same questions. The fix isn't more headcount. It's making sure users get answers to routine questions before escalating to a human customer support rep. What alleviated the support volume was a chatbot grounded in FAQs based on support history.
Summary
I built and deployed a customer-support AI chatbot on Azure OpenAI that answered common customer questions directly on the company website, deflecting routine inquiries away from the customer support team. Starting from exports of real customer-service chats, support tickets, and the existing knowledge base, I distilled the 20-25 most common questions into a curated FAQ with vetted answers, then grounded an Azure OpenAI model by embedding that FAQ in its system prompt with answers drawn from the historical chats and support tickets.
The goal was to ensure its responses matched how the team actually answered customer questions. Over a few passes, I refined it iteratively, reviewing where it answered incorrectly and making corrections each pass until the quality was reliable. A key part of that tuning was making the bot robust to how customers worded the same question differently, ensuring they got the same correct answer.
For deployment, I exposed the model as an Azure OpenAI endpoint and connected it to the website through a serverless backend (Azure Functions) that brokered requests between the two. Access was restricted to paying members: the Function validated each user's membership token before calling the model, which kept the endpoint secure and bounded usage costs.
I also built a custom JavaScript chat widget for the site. When a member sent a message, the widget posted it to the backend, which forwarded it to the Azure OpenAI endpoint, fetched the answer, and returned it to the widget in real time. Routing calls through the backend rather than calling Azure directly from the browser kept the API key and model server-side, so credentials were never exposed to end users.
Results
The chatbot automatically handled the vast majority of routine and repetitive questions, and that helped cut support-ticket volume by roughly 90% and clear a year's backlog of tickets. This freed the customer support team to focus on higher-value business priorities instead of answering the same questions over and over.
However, if I were to build this today, I would use a vector database and a RAG pipeline instead of embedding the FAQ directly in the system prompt. That way the model would be better grounded, with natural guardrails against hallucinating answers to questions outside the scope of the business.
Tech Stack
GitHub
Confidential — code not publicly available.