URL: https://mkdocs.justinsforge.com/memory/handoffs/firefly-personal-budgeting-2026-05-04/
Firefly III Personal Budgeting Stack¶
Goal¶
Cancel Rocket Money ($72/yr, no API), replace with self-hosted Firefly III + SimpleFIN Bridge ($18/yr) wired into Forge so Justin can ask Claude conversational budgeting questions and get automated weekly retros, anomaly alerts, and Notion summaries. Bill negotiation feature explicitly out of scope (Justin doesn't use it).
Why this won¶
- $54/yr saved, payback in 4 months
- Rocket Money has no public API, only CSV export, so it can never be Forge-native
forge-biz-appsLXC (CT 104) has spare capacity (2 cores, 2GB RAM idle)- Plaid/SimpleFIN bridge built once feeds both ERPNext (business) and Firefly (personal)
- REST API on every Firefly endpoint, mirrors the ERPNext integration pattern Justin already knows
Target architecture¶
Banks → SimpleFIN Bridge ($1.50/mo) → Firefly III on CT 104
↕
forge_firefly_*.py client (mirrors forge_erpnext_*)
↕
┌───────────────────┬───────────┴───────────┬─────────────────┐
↓ ↓ ↓ ↓
Coordinator-bot tools Notion monthly Cron anomaly scan Weekly retro
(budget_status, summary auto-page + Telegram alert (Sun pattern,
spending_summary, like fitness)
recent_transactions,
categorize_pending)
Cost¶
| Item | Cost |
|---|---|
| Firefly III software | $0 (MIT, self-hosted) |
| LXC hosting | $0 (existing CT 104) |
| Cloudflare tunnel + Access | $0 (existing) |
firefly.justinsforge.com subdomain |
$0 |
| SimpleFIN Bridge | $1.50/mo = $18/yr |
| Claude API | $0 (subscription quota) |
| Total | $18/yr |
Worst case (SimpleFIN flaky for a bank, fall back to Plaid Production direct): ~$36/yr ceiling.
Build phases¶
| # | Deliverable | Effort | Done? |
|---|---|---|---|
| 1 | Firefly III deployed on CT 104, login at firefly.justinsforge.com behind CF Access |
1 evening | ☐ |
| 2 | SimpleFIN account + 1 bank linked, manual sync working | 30 min | ☐ |
| 3 | Firefly SimpleFIN connector, all accounts auto-syncing nightly | 1 evening | ☐ |
| 4 | forge_firefly_*.py client, mirrors forge_erpnext_* pattern |
1 evening | ☐ |
| 5 | Coordinator-bot tools: budget_status, spending_summary, recent_transactions, categorize_pending |
2 evenings | ☐ |
| 6 | Weekly retro cron + Notion monthly summary page | 1 evening | ☐ |
| 7 | Cancel Rocket Money | 2 min | ☐ |
Phase 1+2 = minimum viable cancel-Rocket-Money point. Phases 3-6 = where Forge actually beats Rocket Money.
Open questions for next session¶
- Confirm SimpleFIN supports all of Justin's banks (Chase, Amex, Capital One, etc.). If a critical bank is missing, switch to Plaid Production direct (~$36/yr).
- Decide if Firefly DB shares MariaDB with ERPNext (saves RAM) or runs its own (cleaner blast radius). Probably separate.
- Notion DB schema for monthly summary: reuse Wellness Daily pattern or new DB?
- Telegram tool naming convention:
budget_*vsmoney_*vsfinance_*? Suggestbudget_*for spending-side tools,accounts_*for balance/net-worth-side.
Out of scope¶
- Bill negotiation (Justin opted out)
- Investment tracking (Ghostfolio could come later if wanted, separate project)
- Joint Kristine accounts (defer until Justin's own setup is proven)
- Tax integration with ERPNext (different problem, different season)
Pickup command¶
When ready to start: /feature-plan Firefly III personal budgeting stack to expand Phase 1 into numbered tasks with file paths and verification steps. Then build Phase 1 in a fresh session.
[Claude Code]