<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: nakey_y</title>
    <description>The latest articles on DEV Community by nakey_y (@nakey_y_d40bed455fdbb6381).</description>
    <link>https://dev.to/nakey_y_d40bed455fdbb6381</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3817239%2F4086be40-e124-4c4d-80e6-d46b6e3db9bf.png</url>
      <title>DEV Community: nakey_y</title>
      <link>https://dev.to/nakey_y_d40bed455fdbb6381</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nakey_y_d40bed455fdbb6381"/>
    <language>en</language>
    <item>
      <title>I built a customer support bot that handles 70% of tickets automatically — here's what I learned</title>
      <dc:creator>nakey_y</dc:creator>
      <pubDate>Tue, 10 Mar 2026 16:12:14 +0000</pubDate>
      <link>https://dev.to/nakey_y_d40bed455fdbb6381/i-built-a-customer-support-bot-that-handles-70-of-tickets-automatically-heres-what-i-learned-1d92</link>
      <guid>https://dev.to/nakey_y_d40bed455fdbb6381/i-built-a-customer-support-bot-that-handles-70-of-tickets-automatically-heres-what-i-learned-1d92</guid>
      <description>&lt;p&gt;When I started building OctoBot, I had one simple observation:&lt;br&gt;
Most support tickets are boring.&lt;br&gt;
Not boring for the customer — they genuinely need help. But boring for the person answering them, because they've answered the exact same question 200 times before.&lt;br&gt;
"Where is my order?"&lt;br&gt;
"What are your shipping delays?"&lt;br&gt;
"How do I reset my password?"&lt;br&gt;
"Can I return this item?"&lt;br&gt;
If you run an e-commerce store or a SaaS product, you know this list by heart.&lt;br&gt;
So I asked myself: why is a human spending 3 hours a day on this?&lt;/p&gt;

&lt;p&gt;The technical approach&lt;br&gt;
OctoBot is built around a simple architecture:&lt;br&gt;
Intent classification first — before generating any response, the bot classifies the incoming message into one of N intent categories. If confidence is below threshold, it escalates to a human agent. No hallucinations on edge cases.&lt;br&gt;
Context injection — for order tracking, the bot queries the e-commerce backend (Shopify, WooCommerce, custom APIs) in real time and injects the actual order data into the response. Not a generic "please check your email" — the real tracking number, the real delivery date.&lt;br&gt;
Escalation logic — anything the bot can't handle with high confidence gets flagged and routed to a human with a summary of the conversation. The human picks up with context, not from scratch.&lt;br&gt;
Learning loop — every time a human agent overrides the bot, that becomes a training signal. The model improves on real production data.&lt;/p&gt;

&lt;p&gt;What I got wrong in v1&lt;br&gt;
The first version tried to handle everything with a single LLM prompt. It worked okay on simple cases but fell apart on anything slightly ambiguous.&lt;br&gt;
The lesson: LLMs are great at generation, terrible at reliable classification without structure.&lt;br&gt;
v2 added an explicit intent router before the LLM response layer. Classification accuracy went from ~71% to ~94% on our test set. Escalation rate dropped by half.&lt;/p&gt;

&lt;p&gt;The stack&lt;/p&gt;

&lt;p&gt;Backend: Node.js + Express&lt;br&gt;
NLP layer: Fine-tuned classification model + GPT-4o for response generation&lt;br&gt;
Integrations: REST webhooks, Shopify API, WooCommerce API, custom CMS connectors&lt;br&gt;
Frontend widget: Vanilla JS embed, &amp;lt; 8kb gzipped, no dependencies&lt;br&gt;
Infrastructure: Railway for the API, Supabase for conversation logs&lt;/p&gt;

&lt;p&gt;Kept it deliberately simple. No Kubernetes, no microservices. It's a product, not a distributed systems demo.&lt;/p&gt;

&lt;p&gt;Results after 30 days in production&lt;br&gt;
Across our current users:&lt;br&gt;
Tickets handled automatically:     68%&lt;br&gt;
Average response time:             &amp;lt; 10 seconds&lt;br&gt;
Human escalation rate:             32%&lt;br&gt;
Customer satisfaction score:       +12% vs. pre-OctoBot baseline&lt;br&gt;
The 32% that escalate to humans are genuinely complex — disputes, custom requests, frustrated customers who need empathy, not automation. That's where humans should be spending their time.&lt;/p&gt;

&lt;p&gt;The business model&lt;br&gt;
I wanted to make this accessible to small teams, not just enterprise.&lt;br&gt;
Free tier — create your first bot, test it on your site, no credit card.&lt;br&gt;
35€/month — unlimited bots. Built for agencies that want to resell this to their clients or deploy across multiple projects.&lt;br&gt;
A lot of web agencies are picking this up as an add-on to their existing offer. They build the site, they deploy the support bot, they add 35€ to the monthly retainer. Everyone wins.&lt;/p&gt;

&lt;p&gt;What's next&lt;br&gt;
Working on:&lt;/p&gt;

&lt;p&gt;Native Slack / Teams integration for internal helpdesks&lt;br&gt;
Voice support (WebRTC)&lt;br&gt;
Analytics dashboard with ticket trend detection&lt;/p&gt;

&lt;p&gt;If you're building something in the support automation space or have feedback on the architecture, I'd love to hear from you.&lt;br&gt;
👉 octobot.fr — free to try, no setup fees.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>productivity</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
