# Daily Notes — 2026-03-11

## Discord ZHQ Setup (MAJOR SESSION)

### Decision: Discord as company workspace + Telegram as personal AI layer
- After long discussion on Telegram vs Slack vs Discord, Mike chose:
  - **Telegram**: personal AI cockpit (Bender + other groups)
  - **Discord**: company workspace replacing Slack, named "ZHQ"
- Triggered by frustration with multiple Telegram groups, setup friction, context fragmentation
- Key insight: Alex Finn YouTube video "You're Using OpenClaw Wrong If You Don't Use Discord" validated the decision

### ZHQ Discord Server Built
- Server name: **ZHQ** (Mike chose this, got a cool logo — retro gold/blue design)
- Server ID: 1478419889243820042
- Bot: Harvey (can rename later)
- Bot User ID: 1481310271434657813
- Mike's User ID: 804013849593905202
- Discord bot token: ~/.openclaw/secrets/discord-bot-token.txt
- OpenClaw paired and connected ✅

### Channel Structure Created (all 16 channels):
- 👑 COMMAND: #bridge, #daily, #strategy
- 🏠 PERSONAL: #health, #family, #money, #goals, #life
- 🧹 NO MORE CHORES: #ops, #growth, #finance, #tech, #customer-service
- 💡 VENTURES: #research, #personal-brand, #new-ventures
- 👥 TEAM: #general

### Key Channel IDs:
- #health: 1481326526472654971
- #bridge: 1481326521011408926
- #growth: 1481326535800520705
- #finance: 1481326537029583052
- #tech: 1481326543216316497

### Config changes:
- Discord added to openclaw.json (token, guild allowlist, requireMention=false)
- #health channel gets custom systemPrompt telling Harvey to use oura.py tool
- Removed invalid cron.jobs key that snuck into config

## Oura Ring Integration

### Built tools/oura.py
- Multi-command CLI: sleep, readiness, activity, hrv, summary
- Token: ~/.openclaw/secrets/oura-api-key.txt
- Uses curl subprocess (Python urllib has SSL issue with Oura)
- Documented in TOOLS.md

### Built scripts/oura-health-report.py
- Posts daily health report to Discord #health (channel 1481326526472654971)
- Uses curl subprocess for Discord API (urllib gets 403)
- Cron: 8am daily (added to openclaw.json cron config)
- Already posted today's report successfully

### Today's health data (Mar 11):
- Sleep score: 51/100 (poor night)
- Readiness: 57/100 (fair)
- Deep sleep: 51, REM: 48, efficiency: 46
- HRV balance: 86, resting HR: 44 bpm
- Recommendation: take a nap

## QuickBooks Integration

### OAuth flow completed — QuickBooks connected!
- Company: No More Chores (Canada, fiscal year: January)
- Realm ID: 123146117368359
- Tokens stored:
  - ~/.openclaw/secrets/quickbooks-client-id.txt
  - ~/.openclaw/secrets/quickbooks-client-secret.txt
  - ~/.openclaw/secrets/quickbooks-access-token.txt
  - ~/.openclaw/secrets/quickbooks-refresh-token.txt
  - ~/.openclaw/secrets/quickbooks-realm-id.txt
- Access token expires: 1hr (needs refresh logic)
- Refresh token expires: ~101 days
- Production keys obtained after completing Intuit app review form
- Redirect URI used: https://developer.intuit.com/v2/OAuth2Playground/RedirectUrl
- Next: build quickbooks.py tool (Mike said yes)

## Telegram Group Setup Script
- Built scripts/add-telegram-group.sh — one-command group onboarding
- Fixed Python bool bug (false vs False)
- Key limitation: chat ID discovery is hard when groupPolicy=allowlist (messages silently dropped)

## Workflow & Org Structure Discussion
- Mike is building AI executive team concept: CEO, CFO, CMO, COO as AI agents
- Each Discord channel can route to different AI agent
- Wants #growth → CMO agent, #finance → CFO agent
- Contractors (5) currently on Slack; not a blocker for Discord migration
- Abigael not on Telegram, on Slack — but Mike not worried about platform friction for team
- Personal life: PERSONAL category in ZHQ for Nicola, Ben, Ellie, Anna (family channels)
- "The Table" and "The Foundry" were runner-up server names

## Leah / GHL Automation Issue
- Debra Wimship replied "Yes" to an automation confirmation SMS
- Leah treated it as new conversation and responded "Hi Debra! How can I help you today?"
- Root cause: Leah has no awareness of what automations sent
- Mike's preferred fix: turn off that automation, have Leah own all SMS (cleaner architecture)
- Need to identify which GHL automation is firing the "reply YES to confirm" text
- Pulled all 152 GHL workflows — candidates: "New Bookings" [published], "Launch27 :: Book Service" [published]
- NOT YET RESOLVED — parked, need to come back to this

## Workout / Calendar
- Original 3pm workout moved to 7pm
- Calendar updated: deleted 3pm event, created 7pm event
- Workout reminder cron set for 6:45pm today (delete-after-run)
- Mike's sleep was rough (51/100) — recommended nap before workout

## SSH Access
- Mike was SSHing into MacBook Air remotely: ssh harvey@100.68.175.57
- No port needed (port 22 default)

## Misc
- iOS keyboard clicks: Settings → Sounds & Haptics → Keyboard Clicks OFF
- OpenAI billing limit hit — couldn't generate ZHQ logo via API; Mike used ChatGPT instead
- ZHQ logo: retro gold/blue design, Mike liked it ✅
- Bender group (-5104457957) = tech/dev/IT Telegram group, may become redundant as ZHQ matures
- Launch27 browser automation discussed as way to handle reschedule/cancel (API is read-only)
- QuickBooks.py tool — Mike wants it built (next session)

## Playwright / Launch27 (Parked)
- Decision: use Playwright (not OpenClaw browser bot) for Launch27 scheduling automation
- Reason: needs to be repeatable/reliable, not just one-off
- Use case: Leah triggers rescheduling/cancellation via browser since Launch27 API is read-only
- Status: PARKED — build when ready
