observations
Elixir bot architecture snapshot (2026-03-04): Full agent. Hourly heartbeat 7am-10pm Chicago (signal detection → GPT-4o only if signals). Daily 8pm editorial post to poapkings.com. #leader-lounge Q&A with GPT-4o function calling + per-leader SQLite conversation memory. #reception onboarding (welcome → CR name match → Member role). Known bug: LLM occasionally returns plain text instead of JSON in _parse_response() — Claude Code fix pending.
Elixir bot restart procedure: launchctl unload ~/Library/LaunchAgents/com.thingelstad.elixir-bot.plist → git pull in ~/Projects/elixir-bot → launchctl load plist. NEVER manually run python elixir.py — launchd is the process manager, manual launches cause duplicate processes.