An AI Sales Rep in Your Telegram.
A Claude Code skill: an automated sales rep working right inside your Telegram. Training, internship, approval mode — all free.
Sales team automation
Not a bot. Not a script. A digital employee you train on your own chat history, one that messages clients from your account, in your voice.
The Skill · Free
Grab It and Make It Yours
Hand the file to your Claude Code and it walks you through the briefing, the internship, and launch. One evening.
SKILL_SALES_DEPT.md · Claude Code
Drop it into .claude/skills/ and call /sales-dept
| 7 | briefing questions |
| 24/7 | Telegram daemon |
| 100% | from your own account |
How It Works
Architecture — Hit Run
A client DMs you. The daemon picks it up via MTProto. Claude drafts a reply in your style. You press one button and the message goes out from your account.
_[Embedded interactive animated diagram — iframe /sales-dept-diagram.html]_
AGINE AI · AI Sales Dept · Architecture · [Run]
Diagram columns: Daemon → Inbox → Processing → Claude Draft → Approval → Send
- daemon.ts —
ON— MTProto listening 24/7 - Telegram · DM → Text — New lead or a reply
- context/@username.md — 14 messages · yesterday · status: hot lead — Topic: pricing and timelines · latest: an objection — History loaded · → Claude CLI ready
- tone.ts · Claude CLI → Draft — In your style, with the history in mind
- Telegram · voice → Voice message — Incoming .ogg file
- Whisper · transcription — Length: 0:42 · language: ru · ~$0.002 per message — "I'd like to hear more..." · accuracy: 97% — Text handed to Claude · → treated as text from here
- tone.ts · Claude CLI → Draft — Replies to the transcribed text
- Telegram · approval bot → Draft for review — The text plus the lead's history. You decide what goes out — [✅ Send]
- MTProto · SQLite → Delivery — From your account. Logged to the database
- Outcomes: 💬 Client gets a reply · 📋 Lead updated in SQLite · 📊 Conversation log saved
- Tip: Spacebar — play / pause
Press "Run" or hit the spacebar to play the animation
Why This Works
We Lost Leads. Rebuilt It.
01 — The first version flopped We launched a regular AI bot. It handled pricing and product questions just fine, but conversion dropped. People can smell a script. Nobody buys at a serious price point from a bot.
02 — We moved into DMs We hooked it up through MTProto, not the Bot API. Clients message us directly. Not a bot. On the technical side: a daemon listens to incoming messages and operates from your own account.
03 — We put it through an internship I used to be an HR director. I know that every new hire, human or AI, goes through onboarding. I took over client conversations myself for a couple of days. It watched, and by the end of each day it sent me a list of patterns and questions.
04 — The model doesn't get psychology One of its questions was: "Sasha, the client asked 4 questions about n8n and automations, and you didn't answer a single one. Why?" I explained: that was anxiety, not questions. They needed reassuring, not explaining. It flagged over 400 patterns like that.
05 — Approval mode Right now it proposes a draft for every incoming and outgoing message. I hit approve or make edits. Until it racks up 20 approvals in a row with zero edits, it doesn't get to work autonomously.
The Stack
Everything Runs on Subscriptions. Almost Free.
| Tool | Role | What it does | Cost |
|---|---|---|---|
| Claude Code | The brain | Generates drafts in your voice. Learns from your chat history via tone.ts. Runs through the CLI. | $20/mo (Max) |
| gramjs (MTProto) | Telegram daemon | Reads and sends messages from your personal account. The Bot API can't do this; only MTProto can. | free |
| OpenAI Whisper | Voice messages | Transcribes incoming voice messages to text. Passes them to Claude as plain text. | ~$0.002 per message |
| SQLite (bun:sqlite) | Lead database | Stores each lead's conversation in context/@username.md. Claude reads the history before every reply. | free |
| Bun | Runtime | TypeScript with no compile step. daemon.ts runs as a system service via a LaunchAgent (macOS). | free |
Setup
One Evening — and It's Running.
1. Download the skill
``
# Put SKILL_SALES_DEPT.md into this folder:
~/.claude/skills/SKILL_SALES_DEPT.md
``
2. Run /sales-dept ``` # In the Claude Code terminal: /sales-dept
3. Complete the internship ``` # The skill will ask you to: # 1. Describe your product and clients # 2. Show it real conversations # 3. Run through test dialogues
4. Hit Run ``` # In .env: DRY_RUN=false bun index.ts daemon