Financial Data
Ozzie stores financial data at two levels of granularity. Understanding the difference is key to building accurate integrations.
Two levels: aggregate and granularβ
Monthly Intake (aggregate) Transactions (granular)
βββββββββββββββββββββββββ ββββββββββββββββββββββββββ
monthly_income: $5,000 2024-01-03 Groceries $45
monthly_expenses: $3,200 2024-01-05 Gas $60
financial_goal: "savings" 2024-01-08 Netflix $15
2024-01-12 Lunch $18
...
Monthly intake is the macro snapshot β the "big picture" that drives plan generation. You submit it once (and refresh it when the user's situation changes). It tells Ozzie how much room the user has to work with each month.
Transactions are the micro level β individual expenses and income events that build a real spending picture over time. They are parsed from natural language, images, PDFs or spreadsheets using GPT-4o.
How they work togetherβ
| Role | Data type | Used for |
|---|---|---|
| Plan generation | Monthly intake | Computing timeline, allocations, action items |
| Insight & coaching | Transactions | Spending trends, category breakdowns, anomaly detection |
| Goal tracking | Both | Progress = actual savings/debt-paid vs plan target |
| Chat context | Both | The AI coach sees both when answering questions |
The intake sets the plan. Transactions reveal reality. Ozzie compares them to generate meaningful feedback.
Immutability and historyβ
Monthly intake snapshots are never overwritten. Each POST /financial-intake creates a new record. The most recent snapshot is always used for plan calculations. This gives you a full history of how the user's financial situation changed over time.
Currency handlingβ
Ozzie stores currency per transaction (ISO 4217 code: USD, BRL, EUR, etc.) inferred from the input by GPT-4o. Monthly intake does not have an explicit currency field β it is assumed to be in the user's local currency. If your product serves multiple currencies, include currency context in the text input (e.g., "spent R$45 on groceries").
What this means for your integrationβ
- Call
POST /financial-intakeonce during onboarding, then refresh it when the user's income or expense profile changes significantly. - Call
POST /transactionscontinuously β every time a user submits an expense, uploads a receipt, or sends a WhatsApp message. - The more transactions, the richer the coaching insights.
β See Financial Intake API Reference and Transactions API Reference