Skip to content

Finances App, Phase 1 Resume Handoff (2026-06-08)

Paused mid-Phase-1 for Claude usage reset. Plan: finances-app-2026-06-08.

Done + committed (Tasks 1-9, 13 + snapshot sign fix)

  • SimpleFIN claimed -> ~/.forge-secrets/simplefin.env (25 accounts, 902 txns). UA header required (CDN 403s python-urllib).
  • [email protected] SA + key ~/.forge-secrets/google-sa.json; forge_google_sa.py mints tokens via PyJWT.
  • DB data/finance/finance.db (5 tables), sync, manual/labeling CLI, net-worth engine.
  • Live: finances.justinsforge.com (VR Alliance tunnel -> Console:8096, forge-finances.service, CF Access app id b96b1dda-fb07-4adb-b492-d383c7bf30d2, allow [email protected]). Pages: net worth / accounts / transactions.
  • Timers: forge-finance-sync.timer (daily 07:00, --notify-on-fail), forge-finance-snapshot.timer (Sun 18:00). weekly_snapshots store SIGNED contributions.
  • Honest current NW (linked only) = $91,604 (assets $110.6k, liab $19k). Placeholder $378k house was DEACTIVATED (active=0, id 26) — but it's REAL per the sheet, re-activate/restore on import.

NEXT: Task 11 history import (in progress, NOT started coding)

Sheet "Wieb Spending Plan" (id 1ZN3uE67btKGh2gR53vR43MZNeo7hsMIinT_whOX529g) is NOT shared with the SA (403). Read it instead via Justin's Drive OAuth MCP (mcp__claude_ai_Google_Drive__read_file_content). Cached export was at a tool-results txt (regenerate if gone).

Sheet structure (parsed)

  • Markdown table: Type | Name | Week of MM/DD .... 19 week cols 01/04 -> 05/11. CONFIRM YEAR with Justin (2025 vs 2026) before keying week_of.
  • Clean balance sheet = rows from header until first NO_HEADER sentinel; everything after is other tabs (budget/expenses) — DROP.
  • Values: $, commas, \-/- neg, () neg, blanks. Sign for chart: Assets +value, Liabilities -value.

Asset rows (21): map by (...last4) to existing simplefin accts, else manual

  • MAP: 6113 US Bank, 0351 Chase Checking, 5276 PNC Spend.
  • MANUAL assets w/ latest values: PNC Emergency $16,233 / House Fund $1 / Tax Fund $4; Key Bank $0; Misc (PayPal/Venmo/Amazon/Cash) $800; Fidelity Joint $23,449 / Justin Roth $23,127 / Krystal Roth $12,169; John Hancock Krystal 401k $15,451; Omnify HSA $1,500; Family Heritage/Globe Life $1,300; 2019 Tesla Model 3 $20,000; 2020 Toyota Rav4 $20,000; 4606 Franklin Park Home $378,000; Garage Addition $40,000; Household Items $25,000; Credit Card Points $1,250; Misc A/R $0.
  • NOTE: PNC Emergency/House/Tax + Fidelity accts ALSO exist as SimpleFIN-linked (PNC 2114/4863/5014, Fidelity 0073/6228/2942). Sheet rows lack last4 -> would DOUBLE-COUNT if imported as manual. On import, MATCH these to existing linked accounts by name (don't create manual dupes); only use sheet for their HISTORY snapshots.

Liability rows (14, before NO_HEADER): map by last4 else manual

  • MAP: 9749 Krystal Sapphire Preferred, 9643/2385/1042/1773 Chase Ink business cards.
  • The 3 negative "J. WIEBELHAUS" Chase accts (2385/1042/1773) = Chase Ink BUSINESS credit cards -> relabel kind=liability, scope=business (likely GUS/JWVR; confirm). 9643 = Ink (SIP, Krystal).
  • MANUAL liabs: Amazon CC, Sapphire Reserve(Justin), Amex, BoA, Discover, Best Buy, Apple, 4606 Home Loan ~$358,906, Rav4 Loan ~$12,617, Tax Bill ~$11,000, House Repair Est ~$16,000, Misc A/P $0, Parents Loan $30,000.
  • Several MANUAL cards (Amazon, Sapphire Reserve, Discover) ALSO exist as SimpleFIN-linked -> MATCH, don't dup.

Import design (forge_finance_import_history.py, dry-run first)

  1. Parse clean region. 2. Classify each row: existing-linked (by last4 OR name match) vs new-manual. 3. For new-manual: create source=manual, kind from section, guess scope/owner. 4. weekly_snapshots: signed contribution per account per week (year per Justin). 5. manual_values: latest non-empty week for new-manual accounts. 6. --dry-run prints full mapping (esp. dedupe matches) for Justin's approval; --commit writes. Idempotent on (week_of, account_id) + simplefin_id.
  2. After commit: re-activate/restore real house+manual assets, re-run snapshot, real NW should land sensibly (gross assets ~$547k per sheet, NW after ~$359k home loan etc. = the real figure).

Then: Task 10 (sheet mirror, needs SA share of a NEW sheet it creates), Task 12 (history chart on /networth), Task 14 (register + reference_finances_app.md + MEMORY.md + home tile + eval).

Asks for Justin on resume

  1. Confirm sheet week YEAR (2025 or 2026).
  2. Confirm business-card scopes for Ink cards (2385/1042/1773 -> GUS? JWVR? ; 9643 -> SIP).
  3. Optional: share "Wieb Spending Plan" with the SA so the import script's canonical SA path works (else keep using Drive MCP read).

[Claude Code, 2026-06-08]