work / FIG. 01
← all systemsAI Sales Ecosystem — chatbot qualifier + sales analytics
Coffee e-commerce. An "AI barista" on the storefront qualifies visitors with BANT, quotes live WooCommerce prices, and answers from a pgvector knowledge base — with daily AI dialog analysis, a weekly CEO report in Telegram, and a voice channel on the same backend.
- answers visitors in ~5–10 s, 24/7
- leads scored 1–10 straight into Zoho CRM
- closed feedback loop: prompt improved from its own analytics — +75% lead score on objections
The scenario
Smakava Roasters is a specialty-coffee e-commerce store (WordPress + WooCommerce) with a retail side and a wholesale line for cafés and offices. Before the system: visitors left the site without a trace, pricing questions waited for a manager, nobody qualified wholesale inquiries — the most valuable segment — and nobody measured how well customer conversations actually went.
| Pain | Consequence |
|---|---|
| Nobody to talk to 24/7 | Lost leads — especially wholesale |
| No qualification of inquiries | Managers burn time on cold leads while hot ones wait |
| Prices answered by hand | A bot with static knowledge starts lying the day prices change |
| Dialog quality never analyzed | The bot’s mistakes repeat; the prompt never improves |
| No funnel picture for the owner | Decisions made blind |
What I built
Three n8n workflows tied together by a shared session ID:
WF1 — a BANT-qualifying “AI barista” on the storefront. A chat widget embedded in the shop qualifies wholesale leads through natural conversation — including objection handling (“budget isn’t approved yet” triggers clarifying questions, not an instant demand for contacts). The agent has a two-level brain: prices and stock come from a live WooCommerce REST tool (zero drift from the real catalog), while product knowledge — tasting profiles, brewing, FAQ — lives in a pgvector RAG base (Neon Postgres + OpenAI embeddings). Volatile data is deliberately never embedded. Qualified leads land in Zoho CRM with a BANT résumé, an AI score of 1–10 and the session ID. Anti-abuse guards — message limits per session and per day, input trimming, spend caps — run before the LLM is ever called.
WF2 — daily dialog analysis. Every morning the workflow reads yesterday’s conversations by session ID and writes to a spreadsheet: the bot’s mistakes, the customer’s actual problem, and patterns that worked. An AI_Analyzed_At marker guarantees no dialog is analyzed (or paid for) twice.
WF3 — a weekly CEO report. Every Friday, funnel metrics are computed by code — totals, new leads, stage breakdown, average score — and the LLM only interprets them: bottlenecks, per-manager tasks, recommendations of the week. Delivered to Telegram.
The loop closes: WF2’s analysis fed a prompt revision that raised the average score of leads with objections from 4 to 7 — the system collects the data for its own improvement.
Architecture
The diagram above matches the running workflows — storefront chat (web + voice) → AI agent with three tools (live prices, RAG knowledge, CRM lead creation) → Zoho, with the nightly analysis loop feeding prompt updates back.
Hard lessons that shaped it
- A rule in the prompt does not guarantee a tool call. In testing, the model once answered product questions from memory — inventing items with fake URLs — despite a direct ban. The fix was threefold: a model chosen specifically for reliable tool calling, a rule that nothing can be named that isn’t in the tool’s response, and a self-check pass on the answer.
- “I’ve passed this to a manager” is only allowed after the tool was actually called. Anti-hallucination rules like this came from tests, not theory.
- Analytics agents never do arithmetic. Code counts; the LLM interprets. Every number in the CEO report is computed deterministically.
Results
Metrics are measured in test runs on the live stand — this is a demo build, not a client testimonial.
| Metric | Before | After |
|---|---|---|
| Response to a visitor | none (form / email) | ~5–10 s, 24/7 |
| Wholesale lead qualification | manual, no criteria | automatic BANT + score 1–10 in CRM |
| Price accuracy in the bot | static text, goes stale | live from the store on every question |
| Score of leads with objections | 4 (“empty” lead) | 7 (BANT completed through follow-ups) — +75% |
| Leads without a phone number | lost | email fallback → lead still lands in CRM |
| Dialog quality analysis | none | daily, in Sheets, no repeat spend |
| Executive reporting | none | weekly Telegram report: metrics + recommendations |
Try it yourself
The stand is live at shop.mahinko.com — the chat runs in demo mode behind a temporary access code (so crawlers don’t burn the LLM budget; the code is checked server-side with brute-force protection). Ping me on Telegram and I’ll send you a fresh code.
contact
Have a process that eats your team's hours?
Describe it in a couple of sentences — I'll reply with an automation plan: what to build, what it touches, and what it will save.