TGAIProfile.
A Telegram outreach CRM driven by an LLM tool-calling agent. It finds and ranks channels, discovers their admins, drafts outreach and runs campaigns — and every high-risk action waits for a human to approve it.
- Role
- Sole developer · Backend · AI agent
- Period
- 2025 — 2026
- Type
- Internal product
Manual Telegram outreach was slow and hard to manage. Finding relevant channels, working out who ran them, remembering who had already been contacted and writing every message by hand did not scale past a handful of prospects. Handing that work to an AI raised the opposite problem: nothing should reach a real person without someone approving it.
An operator writes requests to a Telegram control bot. An OpenAI function-calling agent chooses from 34 tools — search, rank, join, fetch admins, save contacts, draft, send, organise folders, launch campaigns — runs them through a Telethon worker and reads each result before deciding the next step. Campaigns run as a database-backed state machine on Celery. High-risk actions pause the agent for approval, and a first message can only be sent once a human has approved the draft.
- Python · Django · DRF
- PostgreSQL
- Celery + Redis
- Telethon · aiogram
- OpenAI tool calling
- 34-tool agent loop
- Human approval gates
- Execution tracing
Deployed on a VPS and used in a pilot, the system discovered 52 channels and 82 admins and routed 366 outreach drafts through the approval gate: 17 were sent after a human approved them, 10 were rejected. The agent made 90 traced tool calls. Search, discovery, drafting and sending now run as one workflow instead of ad-hoc chats.
Seven stages,one workflow.
- 01
Search
The agent turns an operator's request into a channel search. The Telethon worker queries Telegram's public search and scores the results for relevance.
- in →
- operator request
- out →
- candidate channels
- 02
Rank
New channels are sent to the LLM in batches as a Celery job. A structured-output schema returns a quality score and category, and flags duplicates.
- in →
- candidate channels
- out →
- ranked shortlist
- 03
Join
Channels are joined through the operator's own Telegram session. Outbound actions are held to a daily cap, working hours and randomised pacing, and freeze during Telegram flood penalties.
- in →
- ranked shortlist
- out →
- joined channels
- 04
Discover Admins
Admin lists are fetched through the Telegram API, de-duplicated across channels and saved as contacts.
- in →
- joined channels
- out →
- contacts
- 05
CRM
Leads move through a status pipeline — from admin found to message sent, replied, negotiation and follow-up — with a full status history.
- in →
- contacts
- out →
- outreach-ready leads
- 06
Approve
The LLM drafts each message. Sending, launching a campaign or deleting data pauses the agent; the operator approves or rejects in Telegram, and the database only releases approved drafts.
- in →
- drafts · high-risk actions
- out →
- approved sends
- 07
Send & Monitor
Approved messages go out through the worker. Replies are classified and summarised by the LLM, follow-ups are scheduled, and a watchdog flags campaigns that stall.
- in →
- approved sends · replies
- out →
- tracked conversations
Caravan Dispatcher
Telegram Logistics Automation Platform