Deep Audit · Hook Street Ops
Deep dive — redundancy, lessons, and BOS prep
What this is: the foundation doc for the BOS work going forward — what we have, where it overlaps, how to stop the sprawl, the lessons, and the next build steps.
Generated: Tue, May 26 2026 · 4:43 PM EDT (NY) · Session: 39 cont · HEAD: 4bd8254
Method: 3 parallel deep-read agents (command-center app · redundancy map · lessons+BOS) + today's live work.
Headline: The redundancy you keep feeling is real and now named. You have ~7 surfaces that touch tasks/obligations/money; only a few are live, the rest are parked half-builds. The biggest one — the command-center Next.js app — is a whole "one place" you built in March, ~40% done, never deployed, untouched for 70+ days. It's the clearest artifact of the build-to-80%-then-switch pattern. The "one place" is NOT another app — it's the daily brief + portal + the bot you finished today. BOS forward path is clear and below.
1 · The command-center app — verdict
HookStreet-Business-OS/command-center/ = a Next.js 14 + Supabase dashboard (auth, dashboard, obligations, tasks, reports, assistant console). Clean work_items + obligations + history_events schema.
State: built
Mar 15 2026, 4 commits total,
0 commits in 70+ days. Test Supabase only (no production deploy, no live data, no custom domain). ~40% of its own Phase 1; reports/email/integrations are roadmap vapor.
GRAVEYARD CANDIDATE
It was an earlier attempt at "the one place" that lost priority to the live sheet+bot+portal stack. Reviving it = a 4–6 week build of a 6th surface — the opposite of what you need.
Recommendation (decision, not done yet): harvest its clean obligations/work_items schema as a reference for the BOS v3 design, then mv → archive/graveyard/ (no hard delete). I did not move it — that's your call.
2 · The redundancy map
| Surface | Tracks | Source | State |
| command-inbox bot + sheet | tasks / queue / capture / pulse | "Personal Command Inbox" sheet | LIVE |
| Start Here PWA + Telegram bot | same queue, different UIs | same sheet ↑ | LIVE |
| BOS sheets v1 / v2 | monthly obligations / money | Monthly Obligations v1 (canonical) | LIVE |
| command-center (Next.js) | obligations + tasks + reports | Supabase (test only) | PARKED ~40% |
| Obligations PWA | obligations snapshot | unclear / no live sync | STALE |
| Ops portal | read-only briefing library | static outputs/ | LIVE |
| MIS | market / trading | MIS sheet + Apps Script | LIVE |
Where the genuine redundancy is
- Obligations tracked 3 ways — BOS sheets (live, source of truth) · command-center Supabase (built, not live) · obligations PWA (stale). Pick one.
- Email digests overlap + DUPLICATE-FIRE — MIS (3/day) + BOS (3) both fire; the dedup guard isn't holding → 4–6 emails in 60 min. This is actively bleeding trust.
- Briefing distribution scattered — MIS emails + BOS emails + Telegram pulse + portal all carry overlapping content. Plan (CHANNELS.md): trim to one morning + deltas + one Sunday money digest.
What is NOT redundant (leave it)
- 3 UIs on 1 sheet (bot / PWA / sheet) — same data, different access. Fine.
- MIS vs obligations — genuinely different domains. Keep separate; only fix the dup emails.
- Portal — it's a library, not a system. Correctly a distribution point, not a source.
3 · How to STOP the sprawl
One surface per job. docs/CHANNELS.md already assigns each channel one job — enforce it. Before any new surface: "does an existing one already do this?" (The command-center existed when you needed "one place" — but you built a new one anyway.)
No 6th surface. The "one place" is the daily brief (bot) + portal + the queue — not a new app. Resist reviving command-center or spinning up anything new until the current loop is fully fed.
Minimum viable + capture ≠ closure. Add a tab/trigger/surface only when the current set can't handle a real current need. A fact isn't "in the system" until it's a live row with owner + next action.
Net loops must trend DOWN. Every session: if 5 new things open, close/park 3+. Today we closed: pulse, reply handler, channels, BOS lock, this audit. Parked the new ones explicitly.
4 · Recurring lessons (the patterns + circuit-breakers)
| Pattern | The circuit-breaker |
| Capture ≠ closure | Only 4 labels: Designed → Built → Tested → Deployed. Don't call untested "shipped." |
| Build-to-80%-then-switch (protection, not laziness) | End every session with a SHIP, not a build. When you circle an idea + pull back twice, push to finish. |
| Sheets must be LIVING | If you have to re-run "give me the latest" each week, the system failed. Continuous-update or it rots. |
| Bottleneck = too many open threads | Not you being slow. Fewer loops, finished. Consolidate, don't add. |
| Overbuild / redundancy spiral | Default to minimum viable. Trigger registry before any new automation. One source of truth per domain. |
5 · Where we're up to (today's wins + state)
- DONE today Morning execution spine is LIVE @47: morning brief + reply handler (reshapes top-3 on your reply) + cadence Pulse (every-30-min, observe mode, closes loops from your words, asks on money/legal/family) + the
PULSE text-control command.
- DONE today Dual Gmail (personal + business readable) · CHANNELS.md (one job per channel) · BOS canonical locked · forced-light briefing template · this audit.
- OPEN Confirm 6:48 AM brief fires Wed 5/27 · flip Pulse to
act after a clean stretch · MIS/BOS dup-email trigger reset · forward ztreitel@→sam@ for personal email coverage.
6 · BOS — the important forward work
Canonical (locked): Monthly Obligations.xlsx (V1, 37 tabs) is the source of truth — its Claude_Code_Prompt tab is the resume point (8 locked decisions + 5 open Qs). v2 is a stale snapshot (harvest only its CONTROL_PANEL + Mildred_Start). Migration target: Google Sheets + ONE bound Apps Script v3 — "replaces v1, v2, HS_Unified, HookStreet_Command_Center."
The critical path ("the one place") — in order
- Finish the morning loop — ✅ done today (spine is live).
- Put money IN it — wire the obligations digest into the brief: 14-day due + runway (IN vs OUT) + what changed. ~1 hr. Then the brief = tasks + calendar + money = ~70% of "one place."
- Clean the email noise — disable BOS v1 triggers, trim MIS to one morning + deltas + Sunday money. Kills the dup-fire.
- THEN decide — is a dashboard even needed, or is brief + portal + bot already the one place? (Likely the latter — which graveyards command-center for good.)
Next 1–3 concrete BOS builds (prepped)
- Obligations digest → morning brief (read Monthly Obligations v1, surface due-this-week + risk). Highest leverage.
- Disable BOS v1 triggers (your hands —
DELETE_PROJECT_TRIGGERS in the BOS v1 project) + verify no Daily Snapshot fires ~7:55 AM Wed 5/27.
- Build the v3 spine on Sheets per the Claude_Code_Prompt queue:
Expense_Inbox tab → Pipeline tab → Bookings refresh. Harvest command-center's schema as the design reference.