Transactions
A transaction is a single financial event β an expense, a purchase, or an income entry. Ozzie uses GPT-4o to extract structured transaction data from natural language, images, PDFs, and spreadsheets.
What a transaction containsβ
| Field | Type | Description |
|---|---|---|
id | UUID | Ozzie-assigned identifier |
amount_cents | integer | Amount in cents (always positive) |
currency | string | ISO 4217 code (e.g. USD, BRL, EUR) |
category | enum | Spending category (see below) |
description | string | Short label extracted by AI (max 60 chars) |
transaction_date | date | YYYY-MM-DD β extracted from input or defaults to today |
source | enum | How the transaction was submitted |
ai_confidence | float | AI confidence score from 0.0 to 1.0 |
created_at | datetime | When Ozzie received it |
Categoriesβ
Ozzie classifies every transaction into one of 10 categories:
| Category | Examples |
|---|---|
food | Groceries, restaurants, coffee, delivery |
transport | Gas, Uber, bus, parking, car maintenance |
housing | Rent, mortgage, home repairs |
utilities | Electricity, internet, water, phone bill |
health | Doctor, pharmacy, gym, dental |
entertainment | Streaming, movies, games, concerts |
education | Courses, books, tuition, school supplies |
clothing | Clothes, shoes, accessories |
income | Salary, freelance, dividends, refunds |
other | Anything that doesn't fit the above |
Input sourcesβ
Transactions can come from 6 different sources:
| Source | Channel | Input format |
|---|---|---|
api_text | Direct API | Natural language string |
api_image | Direct API | Base64-encoded image (receipt/statement) |
api_pdf | Direct API | Extracted text from a PDF |
api_spreadsheet | Direct API | CSV rows as plain text |
whatsapp_text | WhatsApp webhook | Message text from Evolution API |
whatsapp_image | WhatsApp webhook | Receipt photo from Evolution API |
AI parsingβ
When you submit "Spent $45 on groceries at Whole Foods and $5 on coffee", Ozzie returns two transactions β not one. GPT-4o extracts every financial event mentioned.
The ai_confidence score tells you how sure the AI was:
| Score | Meaning |
|---|---|
| 0.9 β 1.0 | High confidence β clear amount, category, and date |
| 0.7 β 0.89 | Good β some inference was needed (e.g. currency from context) |
| 0.5 β 0.69 | Moderate β ambiguous input, may want to confirm with user |
| < 0.5 | Low β could not extract reliably; consider re-prompting |
How transactions fuel insightsβ
Every stored transaction feeds into:
- Chat context β the AI coach knows the user spent $X on food this month
- Plan tracking β actual spend vs budgeted allocations
- Goal progress β did they save/pay-down what the plan said?
- Spending trends β category breakdowns over time (accessible via
GET /transactions)
β See Transactions API Reference