๐Ÿš• TaxiUA Bot โ€” Telegram bot for taxi drivers (Google Sheets, 59 nodes, no coding)

:taxi: TaxiUA Bot โ€” Telegram bot for taxi drivers (Google Sheets + n8n, no code)

Created by someone who had ZERO programming experience. Built entirely through AI-assisted dialogue.


:bullseye: What does it do?

A fully functional Telegram bot for taxi drivers and self-employed drivers (Ukrainian FOP) to track their work shifts, income, expenses, and car maintenance โ€” all through simple keyboard buttons.

Features:

  • :plus: Add a work shift (income, fuel, km, other expenses, driver/park % split)
  • :bar_chart: Reports: last shift / day / yesterday / week / month / best day
  • :wrench: Car maintenance control (TO) with km tracking and reset
  • :date: Book a service appointment with master
  • :convenience_store: Browse local car service stations (ะกะขะž) from a database
  • :oncoming_automobile: Save car profile (number plate + brand)
  • :clipboard: View all past shifts

Everything stored in Google Sheets โ€” no database needed.


:mobile_phone: How it looks

The bot uses a persistent reply keyboard:

๐Ÿ“Š Last Report  โ”‚ ๐Ÿ“… Day    โ”‚ ๐Ÿ“† Yesterday โ”‚ โž• Add Shift
๐Ÿ“… Week         โ”‚ ๐Ÿ“… Month  โ”‚ ๐Ÿ† Best Day  โ”‚ ๐Ÿ“‹ Shifts
๐Ÿ”ง Maintenance  โ”‚ ๐Ÿ“… Recordsโ”‚ ๐Ÿš˜ Car       โ”‚ โ„น๏ธ Instructions
                    ๐Ÿช Service Stations

Adding a shift is dead simple โ€” just send numbers:

3000 1000 200 200

(income, fuel, km, other expenses)

Or with park/driver split:

3000 1000 200 200 60 40

You get back:

๐Ÿ“… Daily Report 05.05.2026

Income: 3000 UAH
Fuel: 1000 UAH
Km: 200
Other expenses: 200 UAH
Net: 1800 UAH
Driver share: 1800 UAH
Park share: 0 UAH
Profit per km: 9 UAH

:wrench: Tech Stack

Component Tool
Automation n8n (self-hosted)
Messenger Telegram Bot API
Database Google Sheets
Hosting Any VPS

No Python. No SQL. No backend frameworks.


:building_construction: Workflow overview

  • 59 nodes in a single workflow
  • Smart command parser that handles both button clicks (callback) and text messages
  • User registry in Google Sheets (auto-creates row on first message)
  • Daily upsert logic (update todayโ€™s row or create new)
  • Maintenance tracker with km counter and reset confirmation flow
  • Service station database reader with paginated output (5 ะกะขะž per message)

:light_bulb: Key technical details

Problem I solved: n8nโ€™s Parse Cancel Command node normalizes all button callbacks and text into $json.text, but downstream nodes were still reading message.text from the raw Telegram object.

Fix:

// Instead of:
const textRaw = callbackData || messageText;

// Use:
const textRaw = body.text || callbackData || messageText;

This single line fixed all button routing issues.


:rocket: How to use

  1. Import taxiua_bot_public.json into n8n
  2. Create a Telegram bot via @BotFather
  3. Set up Google Sheets with Daily and ะกะขะž_ะฑะฐะทะฐ tabs
  4. Connect your credentials in n8n
  5. Update YOUR_GOOGLE_SHEET_ID in all Google Sheets nodes
  6. Publish workflow and send /start to your bot

Google Sheets columns (Daily tab):
chat_id | user_id | date | income | fuel | km | other | driver_percent | park_percent | net | driver_earn | park_earn | to_reserve | profit_per_km | car_number | car_brand


:open_book: My story

I had never written a single line of code before this project.

I built this entirely by describing what I wanted to Claude AI, testing the result, finding bugs, describing the errors (with screenshots of n8n execution logs), and iterating.

The process looked like this:

  • Me: โ€œThe button doesnโ€™t respondโ€
  • Claude: โ€œShow me the execution log for the Parse Cancel Command nodeโ€
  • Me: screenshot
  • Claude: โ€œFound it โ€” the IF node checks callback_query?.data but after your parser runs, data is in $json.textโ€
  • Me: fixes applied, tests again

Stats:

  • :wrench: 59 nodes in final workflow
  • :bug: 15+ bugs found and fixed
  • :memo: 6+ workflow versions
  • :keyboard: Lines of code written manually: 0

If I could build this โ€” so can you. n8n + AI = automation without programming.


:link: Links

  • GitHub: (add your repo link)
  • Telegram channel (UA): @Drivetax_bot

Built in Ukraine :ukraine:
Feel free to use, adapt, and share!

1ๅ€‹่ฎš