finance-coach
An AI money coach that plans every payment around every paycheck, and leaves the arithmetic to tested code.
01The app


Screenshots use made-up data.
02Problem
Banking apps show your balances, but not whether this month’s payments fit within this month’s paychecks. With weekly pay, several cards, interest-free installments (MSI) and small loans, the real question is about timing: what’s due before the next payday, and which part of each card balance must be paid in full to avoid interest.
03Approach
A chat coach powered by Claude. It uses tools to look up the user’s real accounts, payment plans and transactions, and it can update them. Every number it quotes comes from a deterministic calculation engine, not from the model. Users upload bank statements and receipts as PDFs, phone screenshots or CSV files, and these become transactions the user reviews.
- agent tools to read, calculate and act
- 20
- automated tests on the engine and tools
- 79
- input formats: PDF, screenshot, CSV
- 3
- reply languages: Spanish and English
- 2
04How the agent works
You ask
“Plan my next 4 paychecks”
Claude
Streaming tool loop with adaptive thinking
Answer
Streamed back; every figure comes from a tool
20 tools
Read
- get_financial_overview
- get_cash_flow
- get_monthly_projection
- get_spending_summary
- search_transactions
- list_records
- list_payment_targets
- list_memories
Calculate
- calculate
- plan_payoff
Act
- save_record
- delete_record
- record_payment
- record_money_in
- log_transaction
- update_transaction
- delete_transaction
- set_profile
- remember
- forget
Calculation engine
Due dates from each card’s statement day · MSI vs. pay-in-full balance · cash balance through every payday
libSQL / Turso
Accounts, plans, transactions, goals and chat history
05Engineering decisions
Math in code, not in the model
The model never does arithmetic. Pure, tested functions compute schedules, due dates and balances; the coach reads their results or calls a calculate tool.
Tools that act, with guardrails
Inputs are validated with Zod before any tool runs. Recording a payment updates balances, installment progress and due dates in a single step, and a duplicate check stops the same payment from being recorded twice.
Extraction with a human in the loop
The model reads statements and receipts and returns structured output validated against a schema. If screenshots overlap, repeated rows are removed in the same request, and every row is reviewed before it’s saved.
Cache-friendly, append-only history
Each conversation keeps the same system prompt from start to finish, and new messages are only appended, never edited. This keeps prompt caching effective across turns.