πŸš• 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!