Context-Everywhere Diagnosis

Why a Claude Code session holds your whole world but the Telegram bot can't hold a conversation — and the fix path.
Audit · Session 39 cont.
Generated: Tuesday, May 26 2026 · 9:45 PM EDT (NY)
Working dir: 05. 2026 BH · repo: hookstreet-workspace · commit at write: 7c7b8c5
Sources: live inbox.ps1 STATE (queue+grocery+transcript) · command-inbox/start-here.gs (2246 lines, read end-to-end) · claude mcp list · docs/CHANNELS.md · docs/CAPABILITY_SCAN.md · LevSMS repo

The crux — why the bot can't hold Code-level context

A Claude Code session reads your whole world. The bot reads ~8 sentences.

Claude Code sessionTelegram bot (@HSInboxBot)
World knowledgeCLAUDE.md + WORKSPACE_AUDIT + CONTEXT + SCOPE_BACKLOG + ~60 memory files + all docs + 6 live MCPsthe Context tab = 8 hand-typed rows + open queue + (mornings only) calendar + flagged email
Conversation memorythe entire conversationlast ~12 turns only (recentTranscriptTurns_(12)), then it forgets
Learning loopI write to memory + docs + commit; next session reads itnone — nothing writes conversation back to durable memory

Three reasons, plainly

  1. Its entire "who is Sam / what's going on" is 8 sentences, seeded once by setupContextTab_(). It has never read one of your docs or memories. The code comment calls this deliberate ("better than dumping every MD file"). That choice is why it feels shallow.
  2. It only remembers the last ~12 messages. Apps Script is stateless — every text rebuilds context off the Transcript tab. Your evening run was 20+ turns, so by the grocery dump the HOA/Eden talk had rolled off. That's the "doesn't hold context" feeling: a sliding window, not the conversation.
  3. No learning write-back — proven tonight. You dumped your full ~150-item grocery/household profile. The bot replied "Loading this as your baseline grocery profile… adding this whole profile to your grocery system 🏆" and wrote nothing. Your live Grocery_List still has 10 items, none of them yours. It reacts and forgets. That is the whole answer to "is the info ever passing through so it learns?" — no.

The fix is not "make the bot read 60 files per text." Real architecture: Code session authors knowledge → a Context/Profile tab is the bot's distilled brain → the bot reads it every message, plus a remember action so the bot can persist facts itself.

Receipts from your last ~12h

Your specific cards

ItemStatus
Gardenercaptured 3× — 001 (P1), 010 (P0), 012 (P0+link)
Caretakercaptured 2× — 011, 013
Bulk pickupcaptured once — 004 (P2, bookshelf + side desk)
"Community"not a card — closest is the neighborhood info sheet linked on the gardener card (1XR-VIX_eWZq5…). Needs definition: a card to do what?
William Penndupe — 002 + 005
1070 East 31st insurancedupe — 010 (5/25) + 014 (5/26)

Are reminders firing? Captured yes — surfaced no. The pulse/brief shows only 1-3 and always picks money/legal, so the gardener reminder silently loses to HOA every pulse. 7 redundant cards total — closeable on your word.

The audit — connected / flows / doesn't

MCP connectors

✅ Connected: Cloudflare · Netlify · Google Drive · Gmail (business) · Google Calendar · gmail-personal (local).   ⚠️ Dead weight: monday.com (needs auth) · Supabase (needs auth) · Circleback (failed) — wire or drop.

LevSMS

Deterministic keyword→sheet service (TIMES/MINCHA/SHABBOS/ZMANIM/WEATHER/SHUL/ZIP). Outbound sheet-driven (APPROVED_RESPONSES + SYSTEM_RESPONSES), content from Hebcal + weather.gov live, NW shul times hardcoded. Per-subscriber data: phone, status, ZIP, tier, timestamps (CONTACTS + INBOUND_LOG). Deliberately ZERO AI in the live path (your hard rule). Live infra (Twilio @31) but only your test number; ZIP gated to 11581. Privacy notes: raw phone storage, no DELETE flow coded, admin list fails open if unset.

The bot loop

capture → INBOX → (deterministic command OR free-text → Claude w/ context+actions) → Transcript log → Telegram. Plumbing solid. The gap is knowledge depth + memory persistence, not wiring.

What we want to know from anywhere — the 5 questions

  1. What's on fire / what should I do now? — all lanes, overdue-first. have it, capped/biased.
  2. What just happened / what did I already tell you? — full conversation + cross-channel. only 12 turns, no email/Code awareness.
  3. What do you know about me? — groceries, household, people, money reality. 8 sentences, no write-back.
  4. Who's talking to me / who do I reach? — contacts + recent inbound both inboxes + LevSMS. bot has none.
  5. Is everything in tandem / nothing dropped or duplicated? — one reconciled view. dupes exist; no dedup-on-write.

The fix path, ranked by leverage

OptionWhat it doesEffort
A — remember write-backadd a remember op → bot persists durable facts to a Profile tab, fed into every message. Kills phantom-write + no-learning. Your grocery dump would've stuck.~1 build, local + redeploy
B — bigger feed + windowinject Profile tab; bump transcript 12→25 + rolling summary so long chats don't amnesia.medium
C — Code→Context bridgea session / Sunday routine distills workspace (status, top loops, key memories) into the Context tab so the bot inherits "what Code knows." The real "same context."medium, a sync not real-time
D — one shared live mapthe single always-current view for you + Mildred (your card 009). The destination; A/B/C are the road.bigger build (say-go)

Decisions for Sam

  1. Pick the direction — start with A (remember write-back) so the bot actually learns, or go straight at D (the one shared map)?
  2. Close the 7 duplicate cards (gardener ×2, caretaker ×1, William Penn ×1, insurance ×1) keeping the best of each — yes/no?
  3. Define "community" — what should that card actually be / do?

Nothing was built or changed this session — this is the map, not a build.