
KUTSUYA
A Telegram bot for two operators: log sales by tapping, from anywhere, in under 30 seconds.
Meet the client. Who they are and who they sell to.
The client
Kutsuya is a Mexican sneaker store that moves pairs through Instagram, run by founder and business partner. The whole operation lives on their phones — sometimes desktops — and logging every sale in the Sheet, field by field, used to eat minutes. We built a Telegram bot where almost everything is a tap: sizes, brands, condition, status and recurring buyers come up as buttons. Only the price gets typed. The client's Sheet updates itself — the same way from the founder's phone, the partner's desktop, or a Telegram open in another city.
What they came to solve, in plain language.
Challenge
- 01Two operators — founder and partner — logging from wherever they are, on any device.
- 02Each operation has 8+ fields: brand, model, size, condition, cost, price, buyer, status.
- 03Typing every field by hand in the Sheet — mobile or desktop — ate minutes per sale.
- 04Risk of stepping on each other's edits when both worked the same row at the same time.
What changed between day one and launch.
Before & after
MANUAL SHEET ENTRY
- Find the right row and type 8+ fields by hand
- One person at a time to avoid stepping on edits
- Slow on the phone, just as slow on desktop
- Same flow every time, no shortcuts
TELEGRAM TAPS
- Sizes, brands, condition and status as buttons
- Recurring buyers ready in one tap
- Only price and brand-new names get typed
- Founder and partner operate in parallel, no conflicts
Every feature shaped so the client closes the deal.
What we built
Taps instead of typing
Sizes, brands, pair condition, order status and recurring buyers come up as buttons in the chat. Only the price and brand-new buyer names get typed. A sale closes in under 30 seconds, versus minutes filling the Sheet by hand.
- Inline keyboards for sizes, brands, condition and status
- Recurring buyers preloaded; option for a new one
- Only price (and new names) need the keyboard
- Per-field validation: you can't advance with missing info
Two operators, one Sheet
Founder and partner run the bot from their own devices at the same time. chat_id whitelist, serialized writes to the Sheet — both see the same truth without stepping on each other.
- chat_id whitelist for both operators
- Every operation is signed with its author
- Zero Sheet write conflicts
- Same flow on mobile and desktop
Every pair gets its own timeline
Every pair has a visible life-cycle: purchase → in transit → in stock → sold. Change status by tapping the matching button and the Sheet reflects it instantly.
- Buttons to move between flow statuses
- Change history per pair
- Filter by status straight from the Sheet
- Visibility by size and model
The Sheet stays the client's
The data lives in Google Sheets, not in our database. The bot writes, the operators open the sheet from any browser and read, filter or export without the bot in the loop. If Telegram goes down, the data is still there.
- Google Sheets as the single source of truth
- Access from any browser
- Exportable to CSV or Excel anytime
- Zero bot dependency to read data
Our five steps applied to a real project.
Process
- 01Wk 1
Discovery
Session with founder and partner: how they log today, which fields they fill, which sizes and brands they handle, who the recurring buyers are. The map that later turns into buttons.
- Map of the current sheet
- Client catalogs: sizes, brands, buyers
- 02Wk 1
Conversational design + presets
We mapped the client's catalogs (sizes, brands, condition, status, recurring buyers) and turned them into Telegram inline keyboards. For each operation, we defined which fields are tap-only and which need typed text.
- Command + preset map
- Per-operation inline keyboard layouts
- 03Wk 2
Build
Implementation with python-telegram-bot. Each command gets its ConversationHandler and preloaded inline keyboards. chat_id whitelist for founder and partner. Serialized writes to the Sheet via gspread.
- Bot running on staging
- Sheet connected via Service Account
- 04Wk 3
Launch
Deploy on Railway with polling. We shadow the founder and partner during the first week of real usage and tune presets (missing recurring buyers, sizes not yet covered) against the friction that shows up in operation.
- Bot in production for both operators
- Conversational handbook + common shortcuts
- 05Wk 3+
Scale
With three weeks of live data, we add shortcuts for repeated operations (top-selling brand+model combos) and a weekly chat report with profit per pair and rotation.
- /resumen and /stock commands
- Automated weekly report
- 01Wk 1
Discovery
Session with founder and partner: how they log today, which fields they fill, which sizes and brands they handle, who the recurring buyers are. The map that later turns into buttons.
- Map of the current sheet
- Client catalogs: sizes, brands, buyers
- 02Wk 1
Conversational design + presets
We mapped the client's catalogs (sizes, brands, condition, status, recurring buyers) and turned them into Telegram inline keyboards. For each operation, we defined which fields are tap-only and which need typed text.
- Command + preset map
- Per-operation inline keyboard layouts
- 03Wk 2
Build
Implementation with python-telegram-bot. Each command gets its ConversationHandler and preloaded inline keyboards. chat_id whitelist for founder and partner. Serialized writes to the Sheet via gspread.
- Bot running on staging
- Sheet connected via Service Account
- 04Wk 3
Launch
Deploy on Railway with polling. We shadow the founder and partner during the first week of real usage and tune presets (missing recurring buyers, sizes not yet covered) against the friction that shows up in operation.
- Bot in production for both operators
- Conversational handbook + common shortcuts
- 05Wk 3+
Scale
With three weeks of live data, we add shortcuts for repeated operations (top-selling brand+model combos) and a weekly chat report with profit per pair and rotation.
- /resumen and /stock commands
- Automated weekly report
The numbers the project left behind in production.
What changed
A sale or purchase closes in under half a minute, versus minutes filling rows by hand.
Size, brand, condition, status and recurring buyers are buttons. Only price and new names get typed.
Both log operations simultaneously from their devices. Writes serialize and the Sheet always stays consistent.
The bot holds the operation until every critical field is filled. Zero half-filled rows in the Sheet.
Screens of the site in production.
How it looks
The technologies that sustain the operation.
Technologies
- Python 3.11
- python-telegram-bot
- InlineKeyboardMarkup
- Google Sheets API
- gspread
- Service Account
- Railway
- Whitelist por chat_id
- Logging estructurado
Want something like this for your business?
If this case clicked for you, let's talk. We reply within one business day, no strings attached.