Instead of typing every purchase into an app, the user simply scans the QR code printed on a fiscal receipt. The system then retrieves the receipt data from Montenegrin government tax portal, extracts purchased items, categorizes them with AI, stores everything in a database, and displays the results in a mobile app through statistics, charts, and AI-generated reports.
Most expense tracking apps still depend on manual input, which makes them frustrating to use consistently.
RET System automates the full process:
- scan a receipt QR code
- retrieve receipt data from the tax portal
- categorize purchased items with AI
- store the data in a database
- visualize spending in a mobile app
- generate AI-powered spending reports
The goal of the project is simple: make personal expense tracking fast, automatic, and actually useful.
- QR scanning of fiscal receipts through the mobile app
- automatic retrieval of receipt data
- AI-based item categorization using custom user-defined categories
- receipt history and monthly spending overview
- spending statistics and category-based charts
- AI-generated spending reports with monthly insights
- anomaly detection in spending patterns
- personalized financial recommendations
- duplicate receipt protection
- The user scans a receipt QR code using the mobile app.
- The backend checks whether the receipt has already been imported.
- If the receipt is new, the request is forwarded to the Python worker.
- The worker retrieves receipt data from the montenegro tax portal and sends the purchased items to the AI model for categorization.
- The processed data is returned to the backend and stored in the database.
- The mobile app displays the updated expenses, categories, and AI reports.
RET System is built as a distributed system with three separate repositories:
Mobile App — ret-mobile
Tech: React Native, Expo, TypeScript
The mobile app is used for:
- scanning receipt QR codes
- viewing expenses and receipts
- managing categories
- displaying charts and AI reports
Backend API — ret-backend
Tech: Java, Spring Boot, PostgreSQL, Hibernate
The backend is responsible for:
- handling API requests
- validating and storing data
- managing categories and reports
- preventing duplicate receipt imports
- communicating with the Python worker
AI / Worker Service — ret-worker
Tech: Python, FastAPI
The worker service is responsible for:
- retrieving receipt data from the tax portal
- processing receipt items
- AI-based product categorization
- generating AI spending reports
In addition to automatic product categorization, the system also uses AI to analyze spending history.
AI reports can include:
- month-to-month spending comparisons
- category growth or decline detection
- anomaly detection for unusual expenses
- personalized recommendations based on spending habits
Reports are stored in the database and can be reopened later inside the app.
- React Native
- Expo
- TypeScript
- Java
- Spring Boot
- PostgreSQL
- Hibernate / JPA
- Python
- FastAPI
- AI model integration
- Docker
- VPS hosting
- CI/CD pipeline
- GitHub Actions
The system is hosted on a VPS using Docker, with a CI/CD pipeline configured to automatically deploy new updates after changes are pushed to GitHub.
RET System is more than a simple CRUD application.
It demonstrates:
- mobile app development
- backend development and database design
- Python service architecture
- AI integration in a real product workflow
- ingestion of data from external sources
- deployment and CI/CD automation
- system design across multiple connected services
RET System is an active portfolio project that is still evolving.
Planned improvements include:
- better report visualizations
- more advanced spending analysis
- improved receipt item normalization
- smarter anomaly detection
- stronger comparison logic in AI reports
- Mobile App:
ret-mobile - Backend API:
ret-backend - Worker Service:
ret-worker
Built as a full-stack portfolio project focused on automation, AI integration, and practical personal finance tooling.

