100 lines
4.6 KiB
Markdown
100 lines
4.6 KiB
Markdown
# Digi Kedai Bot 🤖
|
||
|
||
**A multi-channel AI customer-support bot that answers customers around the clock — and provisions free-trial accounts with zero human involvement.**
|
||
|
||
Welcome! This is the bot that runs [Digi Kedai](https://www.digikedai.com)'s customer support on Telegram and WhatsApp. It's a real, production system I built and run myself — not a demo. I'm publishing the source so you can see exactly how it works, and so it can help anyone building their own AI-powered support bot.
|
||
|
||
## Try it live 🤖
|
||
|
||
**Chat with the actual bot:** [@DigiKedaiBot](https://t.me/DigiKedaiBot) on Telegram — send `/start`, ask about a product (e.g. *"CZH01 有免费版吗?"*), or claim a free trial. What you're talking to is exactly the code in this repo, deployed on my own infrastructure.
|
||
|
||
> 🇨🇳 [中文版(Chinese)](README.zh-CN.md) · 📋 [项目状态(Project state)](PROJECT_STATE.md)
|
||
|
||
---
|
||
|
||
## About me 👋
|
||
|
||
Hi, I'm **Lee Teong Hoe** (Mr Hoelee) — a full-stack developer and DevOps engineer based in Malaysia. I run **Hoelee Enterprise / SifuMail**, building websites and self-hosting infrastructure for Malaysian SMEs.
|
||
|
||
I build things end-to-end: the app, the Docker stack, the Cloudflare tunnel, the database, and the AI wiring. This bot is one of those things — it went from idea to a live, customer-facing Telegram bot in a couple of weeks.
|
||
|
||
---
|
||
|
||
## Why I built this bot
|
||
|
||
Digi Kedai sells digital products (online courses, ebooks, templates). Every sale brings the same questions — *"does this have a free preview?", "how do I get my account?", "which package should I buy?"*. Answering them manually doesn't scale for a one-person business.
|
||
|
||
The bot answers those questions 24/7, retrieves the right catalogue entry by SKU or by natural language, and hands out free-trial accounts automatically — so customers get instant answers and I get my time back.
|
||
|
||
---
|
||
|
||
## What you get from this bot
|
||
|
||
- **24/7 customer support** — answers product questions instantly, no waiting for a human.
|
||
- **Real catalogue knowledge** — retrieves the correct product by SKU or plain-language question, never hallucinates a price or product.
|
||
- **Automatic free-trial provisioning** — customers claim a trial and get an account, end-to-end, no staff involved.
|
||
- **Deterministic flows** — buying, trial redemption, and deep links are handled as reliable state machines, not fragile prompt engineering.
|
||
- **Long-term memory** — remembers each customer across sessions and channels, so follow-ups feel personal.
|
||
- **Multi-channel** — the same core serves Telegram and WhatsApp today, with Shopee/Lazada designed for.
|
||
|
||
---
|
||
|
||
## Tech stack
|
||
|
||
- **TypeScript + Node.js + grammY**, Dockerized
|
||
- **Cloudflare tunnel** webhook ingress (no public IP, no open ports)
|
||
- **LiteLLM** OpenAI-compatible gateway in front of the LLM (provider-agnostic + failover)
|
||
- **PostgreSQL** for conversations + user memory
|
||
- **NocoDB** for free-trial provisioning (existing webhooks finish the job)
|
||
|
||
## What's inside
|
||
|
||
```
|
||
src/
|
||
ai/ agent, prompt assembly, retrieval, memory + summarizer
|
||
channels/ telegram + whatsapp adapters (shared core, per-channel adapters)
|
||
core/ normalized message contract, rate limiting
|
||
db/ postgres schema + self-migration on startup
|
||
integrations/ nocodb (trial provisioning) + n8n (tool calls)
|
||
data/ generated catalogue (SKU/name/category/size/url — no prices)
|
||
tests/ 13 vitest suites (retrieval, trial, purchase, memory, contracts)
|
||
docs/ architecture, decisions, roadmap, operations runbook
|
||
```
|
||
|
||
---
|
||
|
||
## Quick start (development)
|
||
|
||
```bash
|
||
cp .env.example .env # fill in BOT_TOKEN, LLM_API_KEY, POSTGRES_PASSWORD
|
||
npm install
|
||
npm run dev # tsx watch — long-polling if no webhook URL set
|
||
```
|
||
|
||
```bash
|
||
npm test # vitest
|
||
npm run typecheck # tsc --noEmit
|
||
```
|
||
|
||
Full architecture, setup, and runbook live in [`docs/`](docs/).
|
||
|
||
---
|
||
|
||
## Want a bot like this? Let's talk 🚀
|
||
|
||
If you run an online store, a service business, or a community that gets flooded with the same customer questions — a bot like this can answer them for you, 24/7, in your customers' language.
|
||
|
||
I build custom Telegram/WhatsApp AI bots, websites, and self-hosted infrastructure for businesses. If you'd like one — or you want to hire me — I'd love to hear from you:
|
||
|
||
- 📱 **WhatsApp:** [+60 12-797 2969](https://wa.me/60127972969)
|
||
- 📧 **Email:** [[email protected]](mailto:[email protected])
|
||
- 🌐 **Website:** [hoelee.com](https://hoelee.com)
|
||
|
||
Happy to build a bot for your business, or just chat about how this one works.
|
||
|
||
---
|
||
|
||
## License
|
||
|
||
[MIT](LICENSE) © Lee Teong Hoe
|