Skip to main content

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​

RoleData typeUsed for
Plan generationMonthly intakeComputing timeline, allocations, action items
Insight & coachingTransactionsSpending trends, category breakdowns, anomaly detection
Goal trackingBothProgress = actual savings/debt-paid vs plan target
Chat contextBothThe 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-intake once during onboarding, then refresh it when the user's income or expense profile changes significantly.
  • Call POST /transactions continuously β€” 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