The two systems are NOT duplicates. They each hold material the other doesn't.
| v1 Google Sheets | Excel workbook | |
|---|---|---|
| Source ID | 1L_rxCSOnc... | Monthly Obligations.xlsx (local) |
| Tabs | ~13-15 tabs (~41 markdown sections in Drive dump) | 26 tabs |
| Schema age | Live since Sep 2025 · ~150 patches | Built Mon 5/11 via cloud Excel Claude session (~17 turns) |
| Obligations row count | ~57 active + 11 archived | 43 active |
| Obligations schema | 41 columns (legacy bloat) | 28 columns (cleaner) + Side/Amortized?/Include-in-Debt-KPI? (NEW) |
| Apps Script | 118 functions · 137 KB Code.js · 6 active triggers | None (Excel has no Apps Script equivalent) |
| STR detail | Mentions only in Action Master | 5 tabs (9312, 9332, Combined, Operations, PM History) |
| Provenance/source tracing | None (numbers are magic) | Sources_&_Provenance tab traces every static value |
| Wife-safe view | None — wife sees everything if shared | Wife_View tab with 5 KPIs · no debt or business detail |
| Action Master / loops | Yes — 37-row Action_Master tab | Yes — 25-row Action_List tab |
| Cashflow projection | Yes — 20-month month-by-month projection | Yes — Cashflow_Assumptions with real Rocket Money baselines |
| Snowball / Avalanche | Yes — High-APR-first plan view | Not built (computable from Obligations_Master) |
| Calendar overlay | Yes — Jewish holidays + personal events | Calendar_Seasonality (multiplier grid for STR pricing) |
| Net worth / Investments | No | Investments tab (auto-pull liabilities, assets blank) |
| Rocket Money reconcile | No | Top 50 recurring charges from RM 6mo export |
| Amazon classifier | No | 100-row keyword categorization (15 buckets) |
| Sharing/visibility framework | None | Sharing_Map tab + per-tab color tags (Sam/Wife/Mildred/All/Meta) |
Recommendation in one line: Excel workbook is the better architecture going forward. v1 Google Sheets has critical data + the live Apps Script automation. The migration is NOT "Excel replaces Sheets" — it's "port Excel architecture INTO new Google Sheets, then port the useful Apps Script functions onto the new sheet, then archive both v1 Sheets and original Excel file."
From Drive dump of 1L_rxCSOnc... · 41 distinct markdown sections. Multiple sections per tab in some cases (Daily Snapshot KPIs render across 5+ sections).
| Tab | Cols / Rows | What it holds | Migration verdict |
|---|---|---|---|
| Monthly Obligations (main tab) | 41c × 57r | Core obligations table — Type, Card Name, Issuer, Balance, Limit, Min Due, Due Date, Day, APR, Utilization, Payoff Months, Interest Warning, Suggested Payment, User Override, etc. Has live formulas for Days-Until-Due, Interest Warning, Final Payment Suggestion. | MERGE Excel's Obligations_Master has the same data with cleaner 28-col schema. Excel schema wins. Data values reconcile (43 Excel rows ⊂ 57 v1 rows — Excel deleted some closed/archived). |
| Settings / config | 3c × 7r | LAST_MIGRATION marker, version flags, set by V3_MIGRATE_FROM_LEGACY function. | DROP Apps Script migration artifact. Excel doesn't need this — it's the destination, not a versioned migration. |
| Lists (dropdown sources) | 8c × 15r | type_list, pay_from_list, schedule_list, status_list, cadence_list — dropdowns for data validation. | MIGRATE Move to new Sheets as a _Lists sheet with named ranges. Excel Obligations_Master uses inline dropdowns; Sheets prefers central _Lists. |
| Obligations_v3 (newer migration target) | 24c × 43r | Same data, fewer columns, drafted as the "clean" version. Schema mid-evolution between v1 41-col and Excel 28-col. | DROP Superseded by Excel Obligations_Master. |
| Cashflow projection | 9c × 20r | Month-by-month forward projection: fixed_bills, debt_payments, installments, total_outflow, income_estimate, net, running_balance. Through Oct 2027. | MERGE Excel has Cashflow_Assumptions (input layer) but not the 20-month projection (output layer). Port the v1 projection logic onto Excel inputs. |
| Pay This Week / Snowball | 10c × 12r | 2-week pay queue + High-APR-first payoff plan view. | MIGRATE Useful view. Rebuild on Excel Obligations_Master with FILTER/SORT formulas in new Sheets. |
| Daily Snapshot KPIs | Multi-section | Due this month, Cards >80% util, Highest-APR balance, Days to next pmt, Suggested payment actions, Active installment plans, Last report run, Action Master open count, Top 10 obligations by amount, Mini list next 2 weeks. | MIGRATE Excel has Dashboard but doesn't expose this many KPIs. Adopt these KPI definitions in Excel Dashboard, OR keep them in new Sheets as the auto-refreshed dashboard tab. |
| Archive (closed obligations) | 43c × 11r | 11 archived rows (cleanup-2026-04-26): Amex Gold, etc. | MIGRATE Excel Archive tab is empty (9r placeholder). Port these 11 rows over. |
| Snowball/Avalanche projection | 6c × 20r | Month-by-month payoff projection: Starting Balance, Payment, Interest, Ending Balance, Notes — currently shows #VALUE! errors. | MERGE Useful structure but broken. Rebuild clean in new Sheets. |
| High-Priority Debt / High-Risk Util | 6c × multi | Avalanche-method view, high-APR debt attack, high-util warning. | MIGRATE Conditional-formatted slice of Obligations_Master. |
| Action_Master | 8c × 37r | Category, Subcategory, Task, Priority, Status, Due Date, Owner, Notes — full open-loops list. Has Market/Trading rules section (7 rules). | MERGE Excel Action_List is 25r, mostly different scope (financial-only). Reconcile: take v1's broader Action_Master, mark which rows are Excel-Action-List equivalents, drop the trading rules (those belong in MIS doc). |
| Trading rules (7 daily) | 1c × 7r | Daily-take-trades-only-when-regime-aligned · etc. — Sam's trading discipline rules. | DROP Already covered in MIS memory + CURRENT_STATE. Doesn't belong in financial sheet. |
| Auto_Hide / lookup ranges | 1c × multi | Show/Hide flags, internal-script lookup cells. | DROP Apps Script implementation detail. Re-create in new Sheets when porting script. |
| Custom payment plans | 15c × 3r | Schema-only example row for custom payment plans (down payment, frequency, etc.). | MERGE Excel Installments covers this. Drop the example row. |
| Calendar event listings | 5c × multi | Bucket, Start, End, Event, Location — Jewish holidays + personal events. | MIGRATE Useful. Excel doesn't have this. Port to new Sheets — feed off Google Calendar API in new Apps Script. |
| Mini-views / Recently Paid | 4-6c × multi | Recurring subscriptions, recently-paid list, scheduled-for-this-week. | MERGE All derivable from Obligations_Master with FILTER. Drop the static copies. |
| Tab | Cols / Rows | What it holds | Migration verdict |
|---|---|---|---|
| Claude Log | 6c × 18r | Session journal (turns 1-17 from Mon 5/11 cloud Excel session). | DROP Local-session artifact. Useful only inside Excel — don't carry to Sheets. |
| User_Guide | 6c × 78r | "How to operate" — workflow instructions. | MIGRATE Belongs in new Sheets as on-board doc. |
| README | 6c × 35r | System overview. | MIGRATE Same. |
| Sharing_Map | 6c × 66r | Tab color legend (Sam/Wife/Mildred/All/Meta) + future-state share architecture. | MIGRATE Drives Protected Ranges setup in new Sheets. |
| Handoff | 1c × 228r | Markdown handoff doc (what you pasted to me). | DROP One-time handoff. Keep in repo as docs/ markdown instead. |
| Sources_&_Provenance 🔑 | 7c × 37r | Every static value's source file + date + extraction method. Critical anti-magic-number discipline. | KEEP — CRITICAL No equivalent in v1 Sheets. Carry forward. |
| Dashboard | 15c × 37r | KPIs: Monthly Oblig $27,579 · Debt $121K revolving · RE/Auto $890K · Personal/Business split · Action Queue. | MIGRATE Adopt v1 KPI definitions too. Both have dashboards; merge into one. |
| Action_List | 7c × 25r | Open items, decisions, color-coded checkboxes. | MERGE With v1 Action_Master (which has 37r broader scope). |
| Wife_View 🔑 | 7c × 33r | Calm 5-KPI view. NO debt or business detail. Wired to SavingsGoals. | KEEP — CRITICAL Becomes separate Google Sheet with IMPORTRANGE to main. |
| Obligations_Master 🔑 | 28c × 44r | Cleaner schema + Side/Amortized?/Include-in-Debt-KPI? (NEW). | KEEP — CRITICAL Replaces v1 Monthly Obligations. |
| Rocket_Reconcile | 10c × 54r | Top 50 recurring charges from RM 6mo · US Alliance + Vaad confirmed. | KEEP — CRITICAL No v1 equivalent. Drives data integrity. |
| Amazon_Splitter | 10c × 113r | 100-row keyword categorizer · 15 buckets · ready for Amazon Order History paste. | KEEP Utility tool. No v1 equivalent. |
| Installments | 18c × 24r | 20 active installment plans. | KEEP Excel schema cleaner than v1's installment slice. |
| Savings | 10c × 12r | 6 goal buckets · wired to Wife_View. | KEEP No v1 equivalent. |
| Trips | 11c × 10r | Israel summer 2026 seeded. | KEEP No v1 equivalent. |
| STR_9312 / 9332 / Combined / Operations / PM_History | 6-8c × varied | 50 nights Airbnb 9312 · 51 nights 9332 · combined +$664/mo bank-level cashflow · Streamline PM audit. | KEEP No v1 equivalent. Critical STR truth. |
| Nearby_ProForma | 14c × 51r | 5 Eden Gardens builder pro formas (Models A-E). | KEEP Reference for STR pricing strategy. |
| Investments | 8c × 43r | Net worth template, liabilities auto-pull, asset values $0 (Sam to fill). | KEEP No v1 equivalent. Pending Sam fills assets. |
| Control_Panel | 7c × 24r | Live totals. | MIGRATE Excel + v1 both have this. Merge. |
| Cashflow_Assumptions 🔑 | 9c × 35r | 22 blue input cells · $47.5K income / $11.3K fixed / $13.5K variable — REAL Rocket Money 6mo data. | KEEP — CRITICAL Foundation for the 20-month projection. |
| Calendar_Seasonality | 15c × 23r | 96-cell multiplier grid + forecast rows 17-21. | KEEP Drives STR pricing. |
| Archive | 8c × 9r | Empty placeholder. | MIGRATE + populate with v1's 11 archived rows. |
| v1 (41 cols) | Excel (28 cols) | Verdict |
|---|---|---|
| Type | Category + Debt Type | Excel split is cleaner — Category=Kids/Personal/Business · Debt Type=Mortgage/Card/Installment |
| Card Name | Account / Card Name | Rename only |
| Issuer / Vendor | Issuer / Vendor | Match |
| Balance / Cost | Balance / Cost | Match · Excel uses positive sign (v1 had 31 negatives — bug fixed) |
| Credit Limit | Credit Limit | Match |
| Min Due | Min Due / Scheduled Pmt | Match |
| Due Date | Due Date · Due Day | Excel splits date+day for clarity |
| Day | (folded into Due Day) | Same |
| Next Payment Alert | Need Action Flag · Next 7 Days Flag · Overdue Flag | Excel split into 3 boolean flags — better for filtering |
| Pay From Account | Pay From Account | Match |
| Payment Scheduled | (folded into Payment Status) | Excel cleaner |
| Payment Strategy | Payment Strategy | Match |
| Payment Status | Payment Status | Match |
| Notes | Notes | Match |
| APR | APR | Match |
| % Utilization | Utilization % | Match |
| APR Flag · Priority Alert · Interest % of Min Due | (folded into Need Action Flag) | Excel cleaner — 3 calc cols → 1 flag |
| Payoff Months (Min/Aggressive) · Interest Warning | (not in Excel — derive from Obligations_Master) | v1 had this calc. Add to Excel. |
| Suggested Payment This · Payment Due in X Days · User Override · Final Payment Suggestion · Allocated Budget Input | (folded into 3 cols) | Excel cleaner — v1 had too many overlapping payment-suggestion cols |
| Future Balance post payment · Next Due Date | (not in Excel) | v1 calc. Add to Excel if Sam uses it. |
| Installment Count · Start Date · Bi-weekly | (in Installments tab instead) | Excel splits installment detail into dedicated tab — cleaner |
| Monthly Impact · Interest per Pmt · Home/Mortgage Interest | Monthly Interest ($) | Excel folded into one |
| (not in v1) | Active (boolean) | Excel NEW · drives Dashboard filtering |
| (not in v1) | Behavior | Excel NEW · "Installment plan" / "Revolving" / "Fixed bill" |
| (not in v1) | Linked Installment | Excel NEW · cross-ref to Installments tab |
| (not in v1) | Total Due This Month | Excel NEW · separates "this month total" from "min due" |
| Category · Debt Type · Home/Mortgage Interest | Category · Debt Type | Match (Excel simpler) |
| (not in v1) | Side | Excel NEW · Personal / Business / STR — drives KPI filtering |
| (not in v1) | Amortized? | Excel NEW · YES on US Alliance HELOC, etc. |
| (not in v1) | Include in Debt KPI? | Excel NEW · fixes v1's wrong -$773K debt KPI → correct $121K revolving |
| (not in v1) | Closed Loop State | Excel NEW · tracks Open / Done / Snoozed |
Net read: Excel schema is a clear evolution. The 6 new columns (Active, Behavior, Linked Installment, Side, Amortized?, Include in Debt KPI?, Closed Loop State) fix real v1 bugs. v1 had 4-5 redundant calc columns the formulas can rebuild. Carry forward Excel schema. Add back v1's Payoff Months (Min) and Interest Warning as derived formulas in Sheets.
Bound to v1 Sheets via clasp project 1_cgriwCQ.... Lives locally at HookStreet-Business-OS/sheets/src/Code.js.
| Function | Purpose | Trigger | Migration verdict |
|---|---|---|---|
onOpen | Adds custom menu when sheet opens | Sheet-open | MIGRATE Reskin for new menu items |
DAILY_SEND | Renders + sends Daily Snapshot email | Time-based every 2 days, configurable hour | MIGRATE Core daily report |
WEEKLY_SEND | Weekly review email | Time-based weekly | MIGRATE Core weekly report |
BIWEEKLY_SEND | Bi-weekly report | Time-based weekly (with isBiweeklyRunWeek_ gate) | MIGRATE Could fold into WEEKLY |
MONTHLY_SEND | Monthly comprehensive report | Day 1 of month | MIGRATE Core monthly |
WIFE_SEND | Wife-friendly filtered snapshot | Manual menu | MIGRATE Becomes IMPORTRANGE-based on new architecture |
DEBT_SUMMARY_SEND | Debt-only summary email | Manual menu | KEEP Useful on-demand |
OPERATIONS_SUMMARY_SEND | Operations Summary (reads Eden + STR + HSU) | Manual menu | MERGE Bigger surface than just financial — belongs in Operating_OS workbook eventually |
PROCESS_QUICK_CAPTURE | Routes Quick Capture form submissions to right tabs | onFormSubmit + every 30min | KEEP Voice intake critical |
MILDRED_START_BUILD | Builds Mildred's start-of-day brief | Daily 7:30 AM | MERGE Move to Operating_OS workbook |
DASHBOARD_REFRESH | Refreshes Dashboard tab calculations | Manual menu | MIGRATE Adapt to Excel Dashboard schema |
MENU_REFRESH_CALENDAR | Pulls Google Calendar events into sheet | Manual menu | MIGRATE Calendar overlay is useful |
MENU_EVALUATE_ALERTS | Evaluates all alert thresholds | Manual menu | MIGRATE Core alerting |
FULL_SETUP_AND_CLEANUP | One-shot system initialization | Manual menu | DROP Migration artifact — new sheets has different setup |
CREATE_DEFAULT_TRIGGERS / DELETE_PROJECT_TRIGGERS | Trigger management | Manual menu | MIGRATE Same shape in new project |
SHOW_SETUP_HELP · EXPLORE_CONNECTED_SHEETS · CLEAR_EXAMPLE_ROWS | Utility/admin | Manual menu | DROP Migration cruft |
Categorized roughly:
renderReport_, renderSection_, renderTitleBlock_, renderCompactSnapshot_, buildOwnerEmailBody_, buildOwnerEmailHtml_, buildWifeEmailBody_, buildWifeEmailHtml_, formatCompactSheet_, etc. MIGRATEgetObligationData_, getInstallmentData_, getSheetRows_, summarizeByCategory_, indexMap_, readCell_. MIGRATE Adapt to Excel schemarefreshCalendarSummary_, getCalendarFeeds_, parseIcs_, fetchGCalEvents_. MIGRATEquickRouteGrocery_, quickRouteIdea_, quickRoutePersonal_, quickRouteBusiness_, quickRouteCalendar_. KEEP Critical voice intakepackagePdf_, packageWifePdf_, exportSheetToPdf_. MIGRATEbuildSettingsSheet_, buildControlPanel_, buildInstallmentsSheet_, buildActionMasterSheet_, etc. DROP Excel already has these tabslogRun_, logReportSend_, buildLogsIfEmpty_. MIGRATEmoney_, pct_, num_, abbreviateNumber_, formatDateMaybe_, columnToLetter_. KEEP ReusableevaluateAndSendAlerts_, hasDueSoon_, isClosedStatus_, getUtilThreshold_. MIGRATE Adapt to Excel flagsextractCampRows_. MERGE Camp Agudah specific — fold into Installments handlerprocessFormResponses_, quickRunCommand_, etc. DROP Check before deleting| Trigger | Schedule | What it does | Risk if not migrated |
|---|---|---|---|
PROCESS_QUICK_CAPTURE (form) | onFormSubmit + every 30 min | Routes Quick Capture form responses to appropriate tabs | HIGH — voice intake breaks if not migrated |
MILDRED_START_BUILD | Daily 7:30 AM | Builds Mildred's start-of-day brief | MEDIUM — Mildred's morning routine |
DAILY_SEND | Every 2 days at configurable hour | Daily Snapshot email | MEDIUM — Sam's morning rhythm partial |
WEEKLY_SEND | Weekly on weekday | Weekly review | MEDIUM — Sunday weekly review |
BIWEEKLY_SEND | Weekly with isBiweeklyRunWeek_ gate | Bi-weekly comprehensive | LOW — redundant with WEEKLY |
MONTHLY_SEND | Day 1 of month | Monthly comprehensive | MEDIUM — month-open ritual |
Migration rule: Before deleting any v1 trigger, the new Sheets script must have the equivalent trigger AND have been verified once. Do NOT decommission v1 until new is firing successfully for 1 full week.
| KPI | v1 Sheets value | Excel value | Match? |
|---|---|---|---|
| Total Monthly Obligations | $26,299 (from Daily Snapshot) | $27,579 (from Dashboard) | CLOSE — $1,280 gap · Excel includes Sully ($4,706) which v1 may not |
| Debt Balance | -$773K (BROKEN — includes amortized mortgages) | $121K revolving only | v1 BROKEN · Excel's Include-in-Debt-KPI? flag fixes this |
| RE/Auto Outstanding | (unclear in v1) | $890K | v1 doesn't separate · Excel adds clarity |
| Cards >80% util | 2 | (not surfaced as KPI yet) | v1 has this · Excel should adopt |
| Days to next payment | 1 day | (derives from Obligations_Master.Days Until Due) | Excel can compute · same definition |
| Active obligations | 57 rows (some closed) | 43 rows (Excel pre-filtered Active=TRUE) | EXPECTED · Excel dropped 14 closed/redundant |
| Sully (caretaker) $4,706/mo | NOT in v1 | $4,706/mo line item | v1 MISSING · Excel added 5/11 |
| US Alliance HELOC $217K @ 8.50% | In v1 (negative sign bug) | $217K positive · $1,390/mo amortized · excluded from Debt KPI | v1 SIGN WRONG |
| STR cashflow combined | NOT in v1 | +$664/mo (9312 +$539 · 9332 +$125) | Excel correctly identifies STRs cashflow-NEUTRAL · v1 had no view |
Bottom line: Excel is the authoritative truth. v1 has 4+ data integrity bugs (sign convention, amortized in debt KPI, missing Sully, negative balance display). Migrate Excel forward; archive v1 once migration verified.
Hook Street Financial OS v3Hook Street Financial OS v3 ScriptARCHIVED — Monthly Obligations v1 — 2026-XX), revoke editor access, leave as read-only history| Risk | Impact | Mitigation |
|---|---|---|
| Voice Quick Capture breaks during cut-over | HIGH — Sam's primary capture surface | Run parallel for 30 days; cut-over only after verified. |
| Wife sees something she shouldn't (Protected Range fails) | HIGH — privacy | Build Wife_View as SEPARATE Google Sheet with IMPORTRANGE pulling only safe cells. Never share the master sheet with wife. |
| Mildred loses her start-of-day brief | MEDIUM — her workflow | Migrate MILDRED_START_BUILD before disabling v1 trigger. Test on Tuesday before Monday cut-over. |
| Numbers reconcile but a hidden formula breaks (#VALUE!) | MEDIUM — silent data corruption | Add new Apps Script function auditAllFormulas_ that scans for #VALUE/#REF/#N/A and alerts. |
| v1 Sheet shared more broadly than Sam realized (current sharing audit OUTSTANDING) | HIGH — pre-existing privacy gap | Audit v1 Sheets sharing BEFORE migration · revoke all non-Sam access · then migrate |
| v1 Apps Script API keys / secrets present | MEDIUM — exposure | Grep Code.js for sk-, ANTHROPIC_API_KEY, etc. · move any secrets to PropertiesService before clasp pull |
| Triggers fire from BOTH old and new during parallel-shadow → duplicate emails | LOW — annoying not dangerous | During parallel shadow, send new sheet's reports to sam+v3@hookstreetcapital.com alias OR a separate label. Compare side-by-side, only swap to-line after verified. |
| Excel formula syntax doesn't translate cleanly to Sheets | LOW | Excel and Sheets share ~95% of formulas. The 5% (XLOOKUP variations, ARRAYFORMULA spread, INDIRECT scope) require manual translation. Audit during Phase 1. |
| Sam decides mid-migration to add new business logic | MEDIUM — scope creep | Lock requirements at Phase 1 start. New features go to backlog. Migrate first, enhance later. |
| P | Move | Why | Time |
|---|---|---|---|
| P0 | Audit v1 Sheets sharing — revoke all non-Sam access | Pre-migration privacy gate · Sam's recurring concern | 10 min |
| P0 | Grep v1 Code.js for hardcoded secrets · move to PropertiesService if any | Same — pre-migration cleanup | 15 min |
| P0 | Sam decides: drop the 11 v1 archived rows OR migrate them? | Affects Phase 1 scope | 5 min (decision) |
| P1 | Sam confirms: keep BIWEEKLY_SEND or fold into WEEKLY? | Affects Phase 2 trigger count | 5 min (decision) |
| P1 | Phase 1: build new Google Sheet from Excel | The foundation | 3-4 hrs |
| P2 | Phase 2: port Apps Script — ~50 functions to adapt | The automation | 6-8 hrs (Claude can do most of this; Sam reviews + tests) |
| P3 | Phase 3: 30-day parallel-shadow before cut-over | The proof | 30 days passive |
| P4 | Build Operating_OS workbook (Excel handoff Section 10 priority) | Separate from Financial OS — Mildred + STR ops live there | Separate workstream after Phase 1 complete |
docs/TRADING_RULES.md in the workspace repo since they're discipline rules, not data. Your call.sam+v3@hookstreetcapital.com? Or a separate label? Confirm.