Skip to main content

Financial Plan

A financial plan is Ozzie's personalized roadmap for a user. It answers the question: "Given what I earn, what I spend, and what I want β€” how do I get there, and how long will it take?"

Inputs​

The plan is computed from three sources:

InputSourceRequired
Monthly income & expensesPOST /financial-intakeβœ… Yes
Financial goal (type + amount)POST /goalsβœ… Yes
Personality profilePOST /personalityOptional (improves quality)

You must submit financial intake before generating a plan. If intake is missing, the API returns INTAKE_REQUIRED.

What a plan contains​

{
"timeline_months": 14,
"allocations": {
"needs": 0.60,
"wants": 0.20,
"savings": 0.15,
"debt": 0.05
},
"key_metrics": {
"monthly_savings_target": 750,
"projected_goal_date": "2025-07-01",
"savings_rate_pct": 15
},
"action_items": [
"Reduce dining out to free up $120/month",
"Set up automatic transfer of $750 on payday",
"Build 3-month emergency fund before investing"
]
}

timeline_months​

How many months until the user reaches their goal at the current savings/payment rate.

allocations​

A percentage breakdown of how the user's income should be distributed across four buckets. These are targets β€” not constraints.

BucketMeaning
needsNon-negotiable fixed expenses (rent, utilities, food)
wantsDiscretionary spending (entertainment, dining out)
savingsGoing toward the goal
debtMinimum + extra debt payments

key_metrics​

Computed projections: monthly savings target, projected goal completion date, current savings rate, etc.

action_items​

Specific, prioritized recommendations generated by Ozzie's AI based on the user's actual numbers.

When to regenerate a plan​

Regenerate the plan when:

  • The user submits new financial intake (income changed, major expense added)
  • The user changes their goal
  • The user completes their personality assessment
  • Significant time has passed (monthly refresh is a good default)

Simply call POST /plan again β€” it always uses the latest intake and goal.

Plan vs reality​

The plan is the target. Transactions reveal actual behavior. Over time, the chat coach compares them:

"Your plan says spend $800 on food this month. You've logged $1,200 in food transactions so far."

This comparison only works if you're feeding transactions regularly β€” which is why the Transactions endpoint is so important alongside the plan.

β†’ See Plan API Reference