How to build a Telegram inventory management bot
By the Botable team
A Telegram inventory bot tracks what you have, logs what moves in and out, and warns before a line runs out. Describe your items and reorder points, and Botable builds the stock table and the alerts.
What is a inventory bot?
A Telegram inventory bot replaces the shared spreadsheet that everyone edits and nobody trusts. The correct model is not a stock number you overwrite but a movement log you append to: every in and out is a row, and the current level is their sum. That difference is what makes an inventory auditable — when the count is wrong, a log tells you when it diverged and who recorded what, and a single mutable number tells you nothing. On top of that, three features do the real work: reorder thresholds that fire an alert before a line hits zero rather than after, a stock-take mode that records a physical count as an adjustment with a note rather than silently rewriting history, and per-user attribution, because in any team inventory the useful question is always who moved it. Multi-location support means a location column from the start, since retrofitting one is a rewrite.
What commands does it have?
| Command | What it does |
|---|---|
/stock | Current levels, low items first |
/in <item> <qty> | Logs a delivery |
/out <item> <qty> | Logs a sale or a use |
/low | Everything at or below its reorder point |
/count <item> <qty> | Records a physical stock-take |
What do you need before you start?
- A Telegram bot token from @BotFather
- Your item list, with a reorder point for each
- Whether stock lives in one place or several
How do you build it?
Why log movements instead of storing a stock level?
Because a single number cannot be audited. Ask for an append-only movement log with the level derived from it: when the count and the shelf disagree — and they will — the log shows you where it happened. Overwriting a number loses that permanently.
How should low-stock warnings work?
A reorder point per item, checked on every movement, alerting once when the level crosses it rather than repeatedly while it stays below. Repeat alerts on every subsequent sale are why teams mute inventory bots.
How do you handle a physical stock-take?
As an adjustment row with a note, not an overwrite. The count says the shelf has 40 and the system says 47: record the adjustment of minus 7 so the discrepancy is visible. Silently correcting the number hides exactly the information a stock-take exists to produce.
Does it need to know who did what?
Yes, in any team. Attribute every movement to the Telegram user who logged it. It is one column, it costs nothing, and it is the first thing anyone asks when a count is wrong.
A prompt you can use as-is
Paste this into Botable and adjust the details. It is specific on purpose — a vague description produces a vague bot.
Build an inventory bot for my team group. Items have a name, a unit, a reorder point and a location. /in <item> <qty> and /out <item> <qty> append movement rows — never overwrite a stock number — and the current level is the sum of movements. Attribute every movement to the Telegram user who logged it. Alert the group once when an item crosses below its reorder point, not repeatedly. /stock lists levels with low items first, /low lists only those needing reorder, /count <item> <qty> records a stock-take as an adjustment with the discrepancy shown. /history <item> shows recent movements.
Who is this bot for?
- Small shops, cafés and workshops tracking stock without a POS system
- Teams who already coordinate in a Telegram group
- Anyone whose current system is a spreadsheet three people edit
What goes wrong with this kind of bot?
- Overwriting a stock number instead of logging a movement makes discrepancies unsolvable
- Reorder alerts that repeat on every movement below the threshold get the bot muted
- Add the location column on day one; retrofitting multi-location is a rebuild
Questions about inventory bots
Can it scan barcodes?
It can accept a barcode number typed or sent as a photo, and match it against your item list if you store the code on each item. Add the code column when you describe the items — matching on names alone gets messy fast.
Can it produce a reorder list to send to a supplier?
Yes. /low can be formatted as an order — item, current level, reorder point, suggested quantity — and exported or messaged straight to a supplier chat.