MyExternalCortex — Roadmap
"Meet users where they are" is the guiding principle. Platform support expands as demand and economics justify it.
Messaging Platform Support
Tier 1 — Up Next
(Planned; build in rough priority order once prerequisites are met)
Slack (blocked on /web layer)
- Multi-tenant: each workspace installs via OAuth2 callback → requires a live public
HTTP endpoint (FastAPI /web) before this can start
- New SlackWorkspace table: team_id, encrypted bot_token
- User identity is workspace-scoped: User needs slack_user_id + slack_team_id
(unlike Discord/Telegram where IDs are global)
- Incoming events via HTTP webhook; Socket Mode for local dev only
- Distribution: shareable direct-install link — no Slack marketplace review required
- Notifier._send_slack() looks up workspace token, calls chat.postMessage
- Estimated effort: 2–3 days once /web is live
WhatsApp
- Massive global reach (2B+ users); dominant outside North America
- API path: Meta Cloud API directly, or Twilio as middleman
- Architecturally close to Telegram — webhook delivery, global user IDs
- Phone number registration step adds minor friction vs. Discord/Telegram
- Same /web-first dependency as Slack for the webhook endpoint
- Estimated effort: 2–3 days once /web is live
SMS - Widest possible reach — no app required - API path: Twilio or AWS SNS - Stateless by nature; conversation threading requires storing phone number + session - No rich formatting, no buttons — plain text only - Higher ongoing cost (per-message) than app-based platforms - Estimated effort: 2 days; needs careful rate-limit and opt-out handling
Tier 2 — When There's Enough Demand (or Someone Offers Money)
Matrix / Element
- Open-source, federated, privacy-focused
- Good bot API (matrix-nio); fits project values well
- Small but loyal audience; low commercial urgency
Microsoft Teams - Large enterprise / workplace install base - Bot Framework API is well-documented; architecturally similar to Slack - Worth building if a B2B / workplace-ADHD angle emerges
iMessage - iOS/macOS only; no official bot API - Apple Business Connect is heavily restricted and review-gated - Only viable if Apple opens the API or demand from iOS-only users is overwhelming
Google Chat (Google Workspace) - Workplace-focused; requires Google Workspace account to use - Has a reasonable bot API but limited personal-use audience
Tier 3 — Won't Do Without Significant Revenue
Email - Not interactive chat — no back-and-forth coaching loop - Useful only as a one-way notification channel (daily digest, weekly summary) - Every other platform on this list does it better - If implemented: SMTP only, opt-in, no inbound processing
Tier 4 — Watching
Signal — No official bot API. Only path is signal-cli (Java sidecar, DBus/JSON-RPC),
which is operationally messy and terms-of-service ambiguous for automated messaging.
Revisit if Signal publishes an official API.
LINE — Dominant in Japan, Thailand, Taiwan. Has a Messaging API. Low priority until there's geographic demand.
WeChat — China-focused. API access for non-Chinese businesses is severely restricted. Not viable without a Chinese entity.
Viber, KakaoTalk, Zalo, etc. — Regional platforms. Add if specific user demand appears.
Feature Backlog
(Items deferred from the phase plan or not yet scheduled)
- Slack / WhatsApp / SMS — see Platform Support above
- Task dependencies — blocked tasks hidden until prerequisites are done; new
task_dependenciesjoin table (task_id → depends_on_task_id); AI tool to set/clear in natural language; chained tasks (A → B → C) are the simplest case manage.py broadcast— send message to all real users via Notifier; skipis_test=Trueby default;--test-onlyand--user <id>flags- Admin commands backlog — owner-only slash commands (
/admin reset <user>,/admin stats,/admin broadcast),/admin purge_history <user>, usage stats dashboard, bulk user management; owner identity: hardcode Discord ID in settings or role-based check - Prompt caching (Phase 2) — cache-control headers on the system prompt block;
requires refactoring
_build_system_prompt()to return content blocks, marking the stable prefix with{"type": "ephemeral"}; better ROI once user count grows - Win streak summary quality (Phase 2) — review and improve weekly summary job
- Conversation summarization improvements (Phase 2)
- Web presence
/web(prerequisite for Slack/WhatsApp) — FastAPI on a separate port; scope: static landing page, user dashboard (tasks/appts/habit stats), admin dashboard (API usage, cost, user list), REST API layer for future mobile apps - End-to-end test users — test harness calling
coach.respond()/execute_tool()directly (no Discord/Telegram transport); covers onboarding, task CRUD, appointment CRUD, habit setup, morning check-in, reminder delivery, account linking,preferred_platformrouting;is_test=Trueexcludes from broadcasts/stats - Google Calendar OAuth2 + sync (Phase 3)
- Pomodoro focus sessions (Phase 3)
- Pattern detection (Phase 3) — weekly background job, 30–90 days of data, surfaces one actionable observation (time-of-day patterns, habit/schedule correlations, snooze friction, win slumps); ≥60% confidence threshold
- Coping strategy library (Phase 3)
- i18n (Phase 3) — model layer is already multilingual; work needed on hardcoded
strings in bot layer and
OVERWHELM_KEYWORDS/ coaching_modes keyword lists
Design Notes
Adaptive AI Persona — Future Options
User.bot_persona (Text, nullable) is the hook. If set, it is injected into the
system prompt via format_user_profile() as "- Persona note: {bot_persona}".
Three non-exclusive directions:
- Curated personas — small set of named characters with distinct voices (calm-and-structured, energetic-and-playful, etc.), selectable at onboarding
- Emergent persona — after ~1–2 weeks of interactions, one API call (~500 input
- ~100 output tokens) analyzes coaching style responses, completion rates, and mood
signals to generate a short descriptor stored in
bot_persona. Negligible cost. - User-named persona — user names the bot; stored and used in responses