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.pymints 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 idb96b1dda-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_HEADERsentinel; 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)¶
- 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-runprints full mapping (esp. dedupe matches) for Justin's approval;--commitwrites. Idempotent on (week_of, account_id) + simplefin_id. - 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¶
- Confirm sheet week YEAR (2025 or 2026).
- Confirm business-card scopes for Ink cards (2385/1042/1773 -> GUS? JWVR? ; 9643 -> SIP).
- 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]