An n8n-based multi-channel expense and income tracker with AI intent parsing, Google Sheets storage, and channel-specific replies for Telegram, Webhook, Chat Widget, and WhatsApp.
- Introduction
- Features
- Tech Stack
- Installation
- Usage
- Project Structure
- Configuration
- Dependencies
- Examples
- Troubleshooting
- Contributors
- License
This project provides a production-style n8n workflow (Expense Tracker Pro - Multi Channel.json) that:
- accepts financial messages from multiple channels,
- classifies intent with AI,
- stores expenses/income in user-specific Google Sheets,
- returns contextual responses based on user intent and sheet data.
- Multi-channel input: Telegram, Webhook, n8n Chat, WhatsApp (trigger currently disabled in JSON)
- AI intent parsing for text/image/PDF routes
- Expense, income, budget, split, balance/report intents
- Auto onboarding for new users with per-user spreadsheet creation
- Dashboard + monthly expense sheets + Income sheet support
- AI-based analysis replies for balance/report-style intents
- n8n workflow engine
- Google Sheets API (storage)
- Telegram Bot API
- Groq API (vision + analysis model path)
- Gemini/OpenAI/Ollama provider branches for intent parsing
- Import
Expense Tracker Pro - Multi Channel.jsoninto n8n. - Create a Google Sheets registry file with
Profilestab. - Configure environment variables and credentials.
- Follow docs/setup.md for full setup and verification.
Typical flow:
- User sends message in one supported channel.
- Workflow normalizes input and resolves user profile.
- AI parser returns structured intent JSON.
- Workflow executes action against Google Sheets.
- Reply is routed back to the originating channel.
Expense Tracker Pro - Multi Channel.json: main n8n workflow.env.example: environment variable templatedocs/setup.md: setup and testing guidedocs/implementation-plan.md: JSON-aligned implementation analysis and planskills/: local skill artifacts
Core environment variables:
MASTER_REGISTRY_ID=
MODEL_PROVIDER=gemini
TELEGRAM_BOT_TOKEN=
GROQ_API_KEY=
WHATSAPP_PHONE_NUMBER_ID=
WHATSAPP_ACCESS_TOKEN=Notes:
GROQ_API_KEYis required for HTTP Groq nodes.- WhatsApp variables are only required if WhatsApp path is enabled.
- Keep registry read/write nodes pointed to the same sheet ID.
Runtime dependencies are managed by n8n node credentials and external APIs:
- Google Sheets OAuth2
- Telegram Bot token/credential
- Groq API credential
- Optional Gemini/OpenAI/Ollama credentials
Lunch 45k->record_expenseterima gaji 5jt->record_incomeset anggaran makanan 1jt->set_budgetsaldo bulan ini->check_balancelaporan bulan ini->get_reportdinner 200k split with @John->split_expense
- Registry mismatch: ensure all registry nodes use one sheet ID.
- Telegram not triggering: check credential, user filter, and workflow active state.
- Empty analysis: verify Groq credential and
GROQ_API_KEY. - PDF parsing issues: current Telegram media extraction is image-first and needs document fallback logic.
Project contributors can be listed here.
Add your project license here (for example: MIT).