Back to projects

Catetin — WhatsApp Personal Finance Bot

Build a WhatsApp-first personal finance assistant that turns everyday chat messages into a structured, user-owned ledger — no app to install and no forms to fill.

Role

Full-Stack Developer & Automation Engineer — product design, Next.js web app, payment & activation pipeline, and the complete n8n AI workflow.

Timeline

2 Months

Tools

Next.js 16 (App Router) - React 19 - TypeScript 5 - Tailwind CSS 4 + shadcn/ui - Supabase (Postgres + Auth) - n8n - LangChain Agents + OpenRouter LLM - WAHA (WhatsApp Gateway) - Midtrans (Payments) - Resend (Email) - Google Sheets API - Upstash Redis

Business context.

Most people abandon budgeting apps because logging a transaction takes too many taps, and an incomplete ledger is a useless one. Catetin removes that friction by meeting users inside WhatsApp — the default messaging app in the Indonesian market — so "writing down" a transaction becomes as easy as sending "beli kopi 25rb". Behind that one message sits a full SaaS product: onboarding, payments, account provisioning, and an AI agent that does the bookkeeping automatically.

Analysis approach.

  • Built a Next.js 16 web app: marketing site, pricing/packages, a self-serve checkout, and an authenticated dashboard for billing, plan renewal, and single → couple upgrades, with Supabase for Postgres/Auth and Upstash Redis for rate limiting.
  • Automated payment → activation: checkout creates a pending order, Midtrans handles payment, and a webhook provisions a Supabase account plus a personal Google Spreadsheet ledger, then sends a welcome email (Resend) and WhatsApp message (WAHA) — fully hands-off.
  • Engineered a 354-node n8n workflow that ingests WhatsApp messages via a WAHA webhook, normalizes them (including LID phone-number mapping), and routes intent with 33 IF nodes and 13 switch routers.
  • Used 6 LangChain agents (8 OpenRouter chat models, windowed memory) to interpret language and classify income vs. expense, while 110 code nodes + 155 HTTP requests write each transaction into the user’s Google Sheet exactly and read it back for balances and summaries.
  • Added 6 scheduled crons for daily/weekly recaps and payment reminders, a dedicated outbox cron for reliable outbound WhatsApp delivery, and a centralized error-trigger branch so failures are surfaced rather than silently dropped.

Conclusion.

Catetin is a full-stack product where automation is the user experience. Instead of a UI users must learn, the interface is a conversation — and the real engineering lives in making that conversation reliable: payment-to-activation automation, an AI agent accurate enough to trust with money, and a transparent Google-Sheet ledger users actually own.

Chat is the interface — automation is the product.

Catetin is a personal finance assistant that lives inside WhatsApp: users chat what they spent or earned, and an AI agent records it into a clean, structured ledger — no app to install, no forms to fill. The friction of opening an app, picking a category, and typing an amount is exactly what makes expenses go unrecorded, so Catetin meets users where they already are.

Project Artifacts

354Workflow nodes

Nodes in the production n8n workflow that runs the conversation end to end.

6AI agents

LangChain agents on OpenRouter models with conversation memory.

12+Integrated services

Supabase, WAHA, Midtrans, Resend, Google Sheets, Upstash, and more.

How the n8n engine works.

An inbound WhatsApp message arrives via a WAHA webhook and is normalized, then IF/switch logic decides whether it is a transaction, a question, a command, or small talk. AI agents interpret the language and classify income vs. expense, deterministic code writes each transaction into the user’s Google Sheet and reads it back for balances and insights, and scheduled crons drive recaps and payment reminders — with a dedicated outbox cron and a centralized error branch keeping delivery reliable.