The Vision
What if you could transform your boring banking CSV exports into beautiful, actionable financial insights? That's exactly what Asketo did - a family cashflow analytics tool that turned mBank transaction data into smart spending recommendations and gorgeous visualizations.
The entire project was built through AI-assisted development using Claude Code, demonstrating how powerful modern AI tools have become for rapid prototyping and full-featured application development.
What Asketo Achieved
Asketo successfully analyzed my real mBank account data, automatically categorizing transactions from Czech merchants like Rohlik.cz, Alza.cz, Albert, Kaufland, and identifying spending patterns across groceries, electronics, utilities, and travel expenses.
The AI Development Process
Building Asketo was a fascinating demonstration of AI-human collaboration. The entire application - from core architecture to web interface - was developed through prompting and iterative refinement with Claude Code. Here's what made this approach so powerful:
Rapid Prototyping to Production
Instead of spending weeks on initial setup, the AI helped establish a solid Python project structure with proper testing, modular design, and best practices from day one. What normally takes days of boilerplate setup was accomplished in minutes.
Real Data-Driven Development
Using my actual mBank CSV exports with 2,810 transactions, we iteratively refined the categorization logic based on real merchant patterns. The AI analyzed transaction descriptions to identify Czech retailers, payment systems, and spending categories.
Czech Banking Expertise
The AI understood nuanced Czech banking terminology like "PŘEVOD Z CÍLE" (transfers from goals) and "SPLÁTKA KREDITNÍ KARTY" (credit card payments), implementing sophisticated logic to distinguish between income, expenses, and internal transfers.
Technical Architecture
Smart CSV Parser
Handles Czech banking formats with automatic encoding detection and multi-currency support
Intelligent Categorization
20+ categories with Czech merchant recognition and pattern matching
Modern Web Interface
Flask + Tornado server with Bootstrap 5 responsive design and Chart.js visualizations
Privacy First
All processing happens locally - no data leaves your computer
The Critical Challenge
The most complex part wasn't the web interface or categorization - it was getting the financial calculations exactly right. mBank CSV exports show internal transfers as positive amounts, which would incorrectly classify them as income using simple amount-based logic.
We implemented a hybrid classification approach that combines amount-based logic with transfer pattern detection. This ensures transfers like "PŘEVOD Z CÍLE" are correctly identified as transfers rather than income, preventing major calculation errors.
Rigorous Testing
To prevent financial calculation regressions, we built comprehensive test suites that validate:
- Transaction Integrity: Zero-tolerance validation against known banking totals
- Classification Logic: Proper handling of Czech banking terminology
- Currency Detection: Accurate parsing of "1 234,56 CZK" format with spaces
- Regression Prevention: Automated tests preventing specific calculation errors
Beautiful Visualizations
Asketo transforms raw CSV data into interactive dashboards with:
- Monthly Cashflow: Income vs expenses with savings rate calculation
- Category Breakdowns: Interactive pie charts showing spending distribution
- Trend Analysis: Time-series charts identifying increasing/decreasing patterns
- Smart Recommendations: AI-powered suggestions for spending optimization
Family-Ready Features
One of Asketo's standout features is network accessibility. The web server binds to 0.0.0.0:5000
by default, making it accessible to other devices on your network. This means family members can
access financial insights from their phones, tablets, or computers without any complex setup.
Lessons from AI-Assisted Development
What Worked Exceptionally Well
- Domain Expertise: AI understood Czech banking terminology and mBank formats
- Best Practices: Proper project structure, testing, and error handling from the start
- Iterative Refinement: Real data feedback loops improved accuracy continuously
- Full-Stack Development: From backend logic to responsive frontend in one session
The Human Element
While AI handled the implementation, my role was crucial in:
- Providing real transaction data for testing and refinement
- Identifying edge cases and business logic requirements
- Validating financial calculations against known bank totals
- Defining user experience requirements and feature priorities
The Result
In a single development session, we created a production-ready financial analytics tool that:
- Processes real banking data with 99.99% accuracy
- Provides actionable insights through beautiful visualizations
- Respects privacy by processing everything locally
- Offers a professional web interface accessible across devices
- Includes comprehensive testing and error handling
Production Infrastructure & CI/CD
Beyond the application development, Asketo required a complete production deployment pipeline. This was achieved through Infrastructure as Code using Terraform and automated configuration management with Ansible, all orchestrated through GitLab CI/CD.
Infrastructure as Code with Terraform
DigitalOcean Deployment
Frankfurt region droplet (s-1vcpu-1gb, $6/month) with Ubuntu 22.04 LTS for cost-effective European hosting
Security Hardening
UFW firewall, Fail2ban protection, SSH key authentication, and minimal open ports (80, 443, 22)
GitLab Integration
Automated pipeline with validation, planning, and manual deployment approval stages
State Management
Terraform state stored in GitLab backend with infrastructure drift detection
Automated Configuration with Ansible
The Ansible deployment handles complete server configuration and application deployment:
- System Setup: Docker installation, dedicated service user creation, firewall configuration
- Application Deployment: Docker Compose orchestration with Nginx reverse proxy
- Service Management: Health checks, automatic restarts, and management tools
- Security Hardening: Container isolation, resource limits, and network segmentation
GitLab CI/CD Pipeline Architecture
The pipeline includes infrastructure discovery, where Ansible automatically fetches the droplet IP from Terraform state, enabling seamless integration between infrastructure provisioning and application deployment.
Docker-Based Production Deployment
The production environment runs entirely in Docker containers for consistency and isolation:
- Asketo Application: Python Flask app with automatic health checks and resource limits
- Nginx Reverse Proxy: Professional web server with security headers and SSL readiness
- Persistent Storage: Data and upload directories survive container restarts
- Management Tools: Automated deployment scripts and monitoring capabilities
Future Vision
Asketo demonstrates how AI-assisted development can rapidly create sophisticated applications with enterprise-grade infrastructure. Future enhancements could include support for additional Czech banks (Česká spořitelna, ČSOB), predictive analytics, budget tracking, and mobile applications.
This project proves that with the right AI assistance, Infrastructure as Code, and automated deployment pipelines, you can build production-ready applications that solve genuine problems - from development to deployment, all through intelligent prompting and modern DevOps practices.
Project Status
Note: The Asketo project has been decommissioned and the infrastructure has been taken down. This post serves as a case study of AI-assisted development techniques and demonstrates practical approaches for building sophisticated data processing applications through AI collaboration.