Operator console
Telegram as the console for a company's agents
Every agent in a small company reports to and takes direction from one guarded Telegram bot: approvals, time entry, call notes, ideas, and alerts.
How it fits together
Inputs
Plain-language messages
Hours worked, a new idea, or a pasted call transcript, typed from a phone into the topic for that agent.
Telegram
Button taps
Approve, hold, reject, undo, and similar buttons attached to each draft or alert.
Telegram
Engine
Shared router
One bot and one webhook serve every agent. New agents extend the router instead of adding their own entry point.
n8n
Check before thinking
A secret header, then rules on chat, topic, and sender, all before any model runs. Anything else is dropped.
Route by topic
Each agent has its own forum topic, so routing is a lookup, not a model call.
Parse what needs parsing
A small Claude model turns free text into structured fields. Short commands and inbox corrections are parsed by rules instead.
- Claude
Outputs
Drafts, not sends
An approved tap creates a draft invoice or a draft email. Nothing goes to a client from a tap alone.
Meeting records and ideas
A transcript becomes a meeting record with action items. An idea becomes a queued item for review.
Alerts in the right topic
Lead summaries, billing reminders, health-check failures, and build failures post to the topic that owns them.
Guardrails
- Buttons clear after one tap, so nothing runs twice
- The notify script can only reach the operator's own chat
- Ambiguous client names get a question, not a guess
The problem
A company run by agents needs a place where a person approves, corrects, and hears from all of them. Separate dashboards and inboxes for each agent mean approvals sit unseen, and a separate entry point for each agent means more doors to secure.
What I built
- A single Telegram bot, with a forum topic for each agent, as the operator's interface to the whole system.
- A shared router that authenticates every update and checks chat, topic, and sender before any model call.
- Time entry by text message, matched to a client by rules, that becomes a draft invoice.
- Call transcripts pasted into a topic that become meeting records and action items, with anything client-facing held for a tap.
- Idea capture with short commands for status and queue actions, and inbox verdict corrections that need no model.
- Post-only alerts from health checks, spend watchdogs, and failed builds, each in its own topic.
How I built it
The router is an n8n workflow behind one webhook. Rules run first because they are free and cannot be talked out of a decision, and a model runs only when there is free text to parse. Changes to the router are dry-run against production data and checked with authorization simulations before they deploy.
What it shows
I give agents a human interface that is fast enough to use from a phone and strict enough to trust, with one guarded door instead of many.