AI-Powered Expense Tracker
A portfolio case study of an expense tracking system that turns voice or text input into structured accounting records using transcription, GPT-based parsing, machine learning categorisation and Qdrant vector similarity search.
The project was designed for a realistic small-business workflow: quickly capture an expense, extract useful accounting data, assign a category, store it in a database and prepare records for monthly reporting or export. It combines a web interface with a Discord bot so expenses can be submitted from different places without changing the underlying processing pipeline.
Problem the project solves
Manual expense tracking is slow and easy to postpone. Receipts, short notes, fuel costs, cleaning supplies, software subscriptions and other small-business purchases often end up scattered across photos, messages, notebooks and bank statements. The longer the delay, the harder it becomes to remember what each expense was for and how it should be categorised.
This project explores a more practical workflow: the user can describe an expense in natural language or record it by voice, and the system converts that input into a structured record. The goal is not only to save time, but also to reduce friction at the point where the expense actually happens.
Solution overview
Input channels
Expenses can be submitted through a Flask-based web dashboard or through a Discord bot. This makes the project useful in both desktop and quick mobile-style workflows.
Structured output
The system extracts values such as description, amount, category and context, then stores them in a form that can be reviewed, corrected and exported for reporting.
Key features
- Web dashboard for manual expense entry and voice recording.
- Discord bot as an alternative expense submission interface.
- Voice transcription and structured expense parsing pipeline.
- Qdrant vector search for semantic similarity between expenses and categories.
- Machine learning categorisation for recurring expense patterns.
- User corrections stored as feedback for future classifier improvements.
- Multilingual input support for Polish and English expense descriptions.
- Accounting-ready exports to Excel, CSV and PDF.
Architecture and processing flow
The application is built around a multi-stage processing pipeline. A user submits either text or a voice message. Voice input is transcribed first, then the resulting text is passed through a parsing step that turns natural language into structured expense data. After that, the system compares the expense against known categories and historical examples to suggest a suitable classification.
- User submits an expense through the web dashboard or Discord bot.
- Voice input is transcribed into text before further processing.
- The parser extracts structured fields such as amount, description and category hints.
- Qdrant is used for semantic similarity checks against known expense patterns.
- The machine learning layer suggests or confirms the final category.
- The user can correct the result, creating feedback data for future improvements.
- Validated records are stored and can be exported for monthly accounting reports.
Technical challenges
Natural language ambiguity
Expense descriptions are rarely perfectly formatted. The system needs to handle short phrases, mixed Polish and English input, missing context and inconsistent wording.
Reliable categorisation
Similar expenses may belong to different categories depending on business context. Vector search and user corrections help make the classification process more adaptable over time.
Multiple interfaces
The web dashboard and Discord bot use different input patterns, but the backend pipeline needs to keep the processing logic consistent and reusable.
Export-ready records
The final data model has to be useful beyond the application itself, especially for spreadsheet exports, CSV files, PDF summaries and accountant-friendly reporting.
Technology stack
The project combines a Python backend, AI transcription and parsing tools, vector similarity search, database storage and export-oriented reporting.
What this project demonstrates
This case study demonstrates practical backend engineering, AI-assisted automation, data extraction, vector search, feedback loops and integration design. It is not only a simple CRUD application; it shows how different services can be combined into a workflow that reduces manual data entry and prepares business records for later review.
From a portfolio perspective, the project highlights experience with Python application development, external API integration, natural language processing, data modelling, export workflows and user-focused automation.