Back to projects
Project 1

Catatmak

ML-Powered Expense Intelligence

Teaching machines to understand your spending habits

PyTorch
Python
Flutter
Kotlin

Catatmak addresses Indonesia's 49% financial literacy rate by making expense tracking effortless. Using ML-powered categorization, users can log expenses via text, receipt photos, or voice—instantly seeing where their money goes. Born from Bangkit Academy 2023 (Google, GoTo, Traveloka), we provide financial recording and analysis to help Indonesians take control of their finances.

💰 $10,000 incubation funding from Google
🏆 Top 10 best capstone projects among 750+ teams
📱 1k+ downloads on Google Play Store
Team
JM

Jovanic Morgan

Machine Learning · Computer Science

MZ

Muhammad Zhafran (Me)

Machine Learning · Computer Science

PP

Putu Putri Pratiwi

Machine Learning · Computer Science

MR

Muhammad Rifki

Mobile Development · Computer Science

DA

Dewa Athallah Putra K.

Mobile Development · Computer Science

NP

Ni Putu Suci Paramita

Cloud Computing · Computer Science

RR

Rayhan Rafiud Darojat

Cloud Computing · Computer Science

Project Videos

Pitch Video

Pitch Deck
Open full
Catatmak Team at Bangkit Academy 2023

Our team presenting at Bangkit Academy 2023

$10,000 Incubation Funding

$10,000 incubation funding from Google

Top 10 Incubation Winner

Top 10 Incubation Winner - Bangkit 2023

Best Team Award

Best Team Award Certificate

Big Bang Award

Big Bang Award Certificate

Where does your money actually go?

With only 49% financial literacy in Indonesia (OJK, 2022), millions struggle to understand their spending. People feel stressed as money disappears each month without a clear reason—making saving nearly impossible and financial stability a distant dream.

Impact

$10,000 funding from Google. 300+ downloads. Top 10 Incubation Winner among 750+ teams. Addressing Indonesia's financial literacy gap through intelligent expense tracking.

Challenge

People don't know where their money goes each month

Indonesians feel stressed because money disappears without a clear reason. Saving money is tough, making it hard to secure a stable financial future. The key questions: How can I find out where my money is going? What's the quick way to understand my financial situation?

ML Opportunity

Automated financial recording and intelligent analysis. ML can categorize expenses instantly from text, receipts, or voice—giving users clear visibility into their spending patterns and actionable insights.

Methodology

Hybrid approach combining pre-trained IndoBERT with keyword-based classification and regex-based amount extraction for robust Indonesian expense parsing

1
Text Preprocessing: Built preprocessing pipeline to normalize Indonesian slang (gw→saya, gue→saya), convert amount shortcuts (20k→20000, 20rb→20000, 2jt→2000000), and handle informal language patterns
2
Hybrid Classification: Implemented dual-approach system: IndoBERT for neural classification + 150+ keyword patterns per category as fallback. Keywords cover food (bakso, mie, kopi), transport (bensin, gojek, parkir), etc.
3
Regex Amount Extraction: Built comprehensive regex pipeline handling 6 Indonesian formats: plain numbers, k suffix, rb/ribu suffix with 1000x multiplier, jt/juta suffix with 1000000x multiplier, and Rp prefix formats
4
Multimodal Integration: Integrated LayoutLMv3 (transformer-based) for receipt OCR, Whisper for Indonesian speech-to-text, feeding into shared text extractor with confidence-weighted output combination
5
REST API Development: Built FastAPI service with endpoints for text, image, audio, and multimodal input. Added X-API-Key authentication, CORS middleware, and Pydantic response models

Architecture

Late fusion multimodal architecture where each modality produces text, processed through shared IndoBERT + keyword classifier

Text Processing

Indonesian Slang Normalizer
Amount Format Converter
IndoBERT Encoder
Keyword-based Classifier
Regex Amount Parser

Image Processing

LayoutLMv3 Document AI
Receipt Text Extraction
Amount/Date Parser

Audio Processing

Whisper Small
Indonesian Transcription
Text Pipeline Integration

Fusion Layer

Confidence Score Extraction
Weighted Averaging
Category Consensus
Final Output Generation

API Layer

FastAPI
Pydantic Models
API Key Auth
CORS Middleware
Health Check

Model Evaluation

Category Accuracy89.2%

Expense category classification

Amount Accuracy94.6%

Amount extraction from text

Categories7

makanan, transportasi, belanja, tagihan, hiburan, kesehatan, pendidikan

Amount Formats6 types

20k, 20rb, 20 ribu, 2jt, Rp 20.000, plain

API Response<100ms

text endpoint typical

Deployment

VPS deployment with Nginx reverse proxy, systemd process management, and SSL via Let's Encrypt

Server: Ubuntu/Debian VPS with Python 3.11, Uvicorn ASGI server on port 8000
Security: X-API-Key header authentication, HTTPS enforcement, CORS origin whitelist, rate limiting via Nginx
Process Management: Systemd service with auto-restart on failure, NoNewPrivileges and PrivateTmp hardening
Endpoints: /expense/text, /expense/image, /expense/audio, /expense/multimodal, /health, /model/info

Built a working Indonesian expense tracker API with robust slang handling and flexible amount parsing

Slang Handling

Successfully parses 'gw makan bakso 20k' → category: makanan, amount: Rp 20.000

Amount Parsing

Correctly extracts amounts from all Indonesian formats including ribu/juta multipliers

Keyword Fallback

Reliable classification even when neural model confidence is low, using 150+ keywords per category

API Integration

Clean REST API with JSON responses, ready for mobile app integration

Key Achievements

$10,000 incubation funding
1k+ App Store downloads
89.2% category accuracy, 94.6% amount accuracy
Google & Ministry of Education recognition