The app runs the cycle.
The workbook keeps the record.
The GPT moves data between them.
Your phone-side control panel. Torches bills, logs caps, catches Dammit Mug spending, flips subscriptions, updates goals. Lives in the current cycle.
The historical record in Drive. Stores statements, debt balances, 3-month averages, transaction history, and the Monthly Control Center. Keeps the long-term truth.
The bridge. Applies Forge Reports to the workbook. Generates snapshots back for the app. It translates. It does not decide.
| SITUATION | APP | WORKBOOK | GPT |
|---|---|---|---|
| Paid a bill / torched it | YES | โ | Later |
| Spent against a cap | YES | โ | Later |
| Off-script spend | DAMMIT MUG | โ | Later |
| Canceled subscription mid-cycle | YES | โ | End-cycle apply |
| Credit card statement dropped | โ | DEBTS | Snapshot after |
| Apple statement dropped | โ | APPLE REF | Snapshot after |
| Need next cycle loaded on phone | โ | โ | SNAPSHOT |
| PROBLEM | CAUSE | FIX |
|---|---|---|
| GPT can't find an item | Names don't match exactly | Pick one canonical name everywhere |
| Goal change missing | Older app report didn't flag it | Re-check inputs.emergencyTarget / propaneTarget |
| Snapshot erased cap spending | Snapshot resets per-cycle logs | Only import AFTER applying report |
| v5.8 JSON but v5.9 title | Cosmetic hardcoded label bug | Ignore. Fix later in app code |
| GPT updated something wrong | Toggle or conflict rule changed it | Read FLAGS. Roll back if needed |
| Two pay periods open | A cycle was skipped | Generate report now; apply remaining app data |
App = current cycle brain
Workbook = history brain
GPT translates only
Exact names matter
Apply report before snapshot
Read summary every time
When in doubt, stop
Run the loop. Read the summary. Trust the system.