Finance AI Agent
A tool-based AI agent that actually understands your money
The Problem
Manual finance tracking is tedious. Generic AI advice is shallow.
Most people don't know where their money goes. Spreadsheets require constant effort, and generic AI chat gives vague, one-size-fits-all advice. Finance AI Agent uses a proper tool-based architecture — the LLM orchestrates purpose-built tools rather than trying to do everything in a single prompt. The result is accurate categorization, real monthly reports, and actionable budget suggestions.
Architecture
How it's built
Built on MCP (Model Context Protocol) architecture. The LLM acts as an orchestrator: it reads user intent, selects the correct tool, and calls it with the right parameters. Each of the 5 tools has a single, well-defined responsibility. No tool does more than one job — making the system testable, debuggable, and extensible.
System Flow
User Input
Natural language
LLM Orchestrator
Intent → Tool Selection
upload_transactions
Ingest CSV/data
categorize_transactions
Tag & classify
monthly_report
Generate summary
budget_suggestions
AI recommendations
User Input → LLM → Tool Selection → Tool Execution → Structured Response
Tech Decisions
Why these choices
MCP over a monolithic AI call
Separates concerns cleanly. Each tool is independently testable and mirrors how production AI systems are actually built at scale.
Python for backend
Rich data processing ecosystem. Pandas for transaction handling, clean integration with LLM APIs, fast iteration.
5 discrete tools (not more)
Deliberately scoped. Every tool boundary was a design decision — deciding what logic belongs in the agent vs. in the tool itself.
Challenges & Learnings
What was hard
- 01.
Designing tool boundaries: deciding what logic belongs in the LLM orchestration layer vs. the tool implementation.
- 02.
Prompt engineering to ensure the LLM selects the correct tool without over-calling or hallucinating tool inputs.
Screenshots / Demo
In action
Screenshot coming
Add image at /public/projects/finance-ai/screenshot.png