FinOps Agent
FinOps Agent tracks transactions, surfaces spending patterns, and answers questions about where your money goes, powered by a multi-agent analysis layer. It's a template for serious, well-architected full-stack AI products rather than a toy demo.
Built with
What it does#
FinOps Agent is a personal budgeting application with a multi-agent spending-intelligence engine. Its design goal is production-grade, multi-user infrastructure behind a single-user experience: the plumbing is built like a real product, while the UX stays focused on one person's money. It ingests transactions, categorises and analyses them through a set of agents, and answers questions about spending.
Monorepo#
A Turborepo workspace managed with pnpm, with clear separation between apps and shared packages:
apps/web Next.js 15 frontend (App Router)
apps/api FastAPI backend
packages/ui design system (Storybook)
packages/shared-types generated TypeScript types
packages/tsconfig shared TS presets
packages/eslint-config
docker/ Compose configs (MongoDB, Redis, init)
docs/ plans, ADRs, test docsBackend#
FastAPI exposes the REST API, with MongoDB for persistence through the Beanie ODM and Redis for caching. Interactive OpenAPI docs are served at /docs. The multi-agent layer runs the financial analysis: transaction categorisation and spending insight over the data store.
Frontend#
Next.js 15 (App Router) with styled-components v6, built against the shared packages/ui design system that is documented in Storybook.
The contract: generated types#
A key decision is that the frontend never hand-writes API types. pnpm types:generate reads the backend OpenAPI schema and emits TypeScript into packages/shared-types, so the web app and the API cannot silently drift apart.
Developer workflow#
pnpm dev # web + api in parallel via Turbo
pnpm typecheck # tsc + mypy (strict)
pnpm test # Vitest (web) + pytest (api)
pnpm lint # ESLint + Ruff
pnpm seed # 24 months of demo transactionsDocker Compose brings up MongoDB, Redis, and an init service; locally the web app runs on http://localhost:1234 and the API on http://localhost:8000. Node and tool versions are pinned via .nvmrc and .tool-versions, and architecture notes live in CLAUDE.md. By line count the codebase is an even split of Python (about 52%) and TypeScript (about 48%).
Why it matters#
It is a blueprint for a serious full-stack AI product: strict type-safety across the Python and TypeScript boundary, a real caching and persistence layer, agent-driven analysis, and the monorepo tooling to hold it together.
More projects
UK Visa Sponsor MCP Server
An MCP server that lets AI assistants search the UK Register of Licensed Visa Sponsors: check sponsorship, filter by route, and pull stats in natural language.
Python · FastMCP · Docker
UK Visa Sponsor Search
Search the entire UK Register of Licensed Sponsors: 125,000+ verified companies, updated from GOV.UK, in one fast, filterable interface.
Next.js 16 · React 19 · TypeScript · MongoDB Atlas · Mongoose · Tailwind CSS v4 · shadcn/ui · Framer Motion · Railway
Adzuna Job Search MCP Server
A FastMCP server that gives AI assistants live job-market data: search roles, analyze salaries, and research employers across 12 countries.
Python · FastMCP · Adzuna API · Docker · PyPI · GitHub Actions