Skip to content

feat(spending): Essential vs discretionary spending breakdown (#120)#272

Open
dagangtj wants to merge 1 commit intorohitdash08:mainfrom
dagangtj:feat/spending-breakdown-120
Open

feat(spending): Essential vs discretionary spending breakdown (#120)#272
dagangtj wants to merge 1 commit intorohitdash08:mainfrom
dagangtj:feat/spending-breakdown-120

Conversation

@dagangtj
Copy link

Summary

Classify expenses into essential (needs) vs discretionary (wants) with 50/30/20 rule analysis.

Closes #120

Changes

  • Spending service: packages/backend/app/services/spending_breakdown.py

    • Auto-classify by category keywords (30+ patterns)
    • 4 types: essential, discretionary, savings, unclassified
    • 50/30/20 budgeting rule analysis with status tracking
    • Monthly trend: essential vs discretionary over time
    • Actionable recommendations engine
    • Custom classification rules support
  • API: packages/backend/app/routes/spending.py

    • POST /spending/breakdown — full analysis with recommendations
    • POST /spending/classify — classify single category
    • POST /spending/trend — monthly trend data
  • Tests: 18 test cases

Acceptance Criteria

  • Production ready implementation
  • Includes tests (18 cases)
  • Follows existing code patterns

…ash08#120)

- Classify expenses into essential/discretionary/savings/unclassified
- 50/30/20 budgeting rule analysis
- Monthly trend tracking
- Actionable recommendations engine
- Custom classification rules support
- REST API: breakdown, classify, trend
- 18 test cases
@dagangtj dagangtj force-pushed the feat/spending-breakdown-120 branch from d7f1805 to 968b0f7 Compare February 28, 2026 13:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Essential vs discretionary spending breakdown

1 participant