Goals
A goal is the user's primary financial objective. Every Ozzie user has one active goal at a time, and it drives everything: the financial plan, the Money Moves cadence, and the coaching tone.
Two goal typesβ
savings β The user is building toward something: an emergency fund, a vacation, a down payment, or just general financial security.
debt β The user is paying off something: a credit card balance, a personal loan, a car payment. The plan focuses on accelerating payoff.
Goal attributesβ
| Field | Description |
|---|---|
goal_type | "savings" or "debt" |
goal_name | Human label, e.g. "Emergency Fund" or "Pay off Visa card" |
target_amount | The finish line in the user's currency |
starting_amount | Where they start (current savings or current debt balance) |
cadence | How often they want to take action |
next_move_date | When the next Money Move is due |
Cadence optionsβ
| Cadence | Frequency |
|---|---|
weekly | Every 7 days |
biweekly | Every 14 days |
twice_monthly | 1st and 15th of each month |
monthly | Once a month |
The cadence determines how often Ozzie generates new Money Move cycles. A user who wants aggressive progress picks weekly; one who wants a lighter touch picks monthly.
How goals drive the systemβ
Goal (type + target + cadence)
β
βββ Plan generation (timeline, allocations)
β βββ "You'll reach your target in 14 months"
β
βββ Money Moves (DO tasks with amounts)
βββ "Transfer $200 to savings this week"
The goal is the anchor. Change the goal β regenerate the plan β new Money Moves.
Goal progressβ
Progress is tracked implicitly through completed Money Move tasks and transactions. There is no separate "progress" endpoint β the chat coach and plan reflect current progress based on the accumulated data.
Recommendations for integratorsβ
- Always create a goal after financial intake and plan generation β the plan needs income/expenses to compute a realistic timeline.
- If your onboarding flow captures goal info upfront, batch it: create user β submit intake β create goal β generate plan.
- You can update a goal by calling
POST /goalsagain β it replaces the active goal.
β See Goals API Reference