Full E2E flow · Telegram-native · No on-device model dependency · Tested on Hetzner
User sends message via any platform. Routed through Hermes Gateway to Skill Engine API.
System prompt: 83 skills compressed into ~9K chars. Model returns skill_id only. Temperature 0, max 20 tokens.
Accuracy: 100% (5/5 test messages)
Avg latency: 843ms
Cost: $0.12/1M tokens (~$0.00002/route)
Daily cost @ 100 msgs/user: $0.002
{"skill_id": "patpat", "confidence": "high"}
If confidence < threshold → escalate to chat-turn (free-form conversation)
Deterministic. SQLite CRUD. Zero LLM after codification.
shopping-list, reminders, notes
Template + tall model escalation. BCT nudges injected.
patpat, wellness, parenting
Knowledge + triage. Medical disclaimer. Always tall model.
symptom-triage, speech-therapy
Structured pipeline. Constraint extraction → plan assembly.
travel, meal-plan, study-plan
Cron-triggered. State diff. Alert on change.
weather, elder-checkin, commute
CRUD. Onboarding flow. No LLM needed.
onboarding, profile-system
Passively extracts signals from every conversation. No explicit interview. Builds confidence over time.
| Variable | Source | Status |
|---|---|---|
| Family role | Signal extraction | Built |
| Pain points | Signal extraction | Built |
| Communication style | Signal extraction | Built |
| Message pace | Timing analysis | Built |
| Goals (inferred) | Signal extraction | Built |
| Kids' needs | Signal extraction | Built |
| Preferred timing | Usage patterns | Built |
| Weekly rhythm | Pattern detection | Built |
| Avoid topics | Negative signals | Built |
| Skills usage | Tracking | Built |
Multi-classification pipeline using tall model. Runs after N messages (threshold-gated).
| Classification | Model | Status |
|---|---|---|
| Chase Hughes Needs | Claude Sonnet | Built (6 needs) |
| Hughes Decision Style | Claude Sonnet | Built (6 styles) |
| Maslow Level | Claude Sonnet | Built |
| Rapport Score | Rule-based | Built |
| Stage of Change | Claude Sonnet | Built (per-goal) |
| Formative Years | Claude Sonnet | Built |
| Big Five (OCEAN) | EMA from signals | Schema only |
| DISC | Web app only | Not in engine |
| Attachment Style | Web app only | Not in engine |
| Core Wound | Web app only | Not in engine |
10 categories: forgetfulness, overwhelmed, lack_of_confidence, lack_of_planning, low_motivation, social_pressure, environment, knowledge_gap, guilt_shame, plateau
⚠️ Aliases exist but no auto-extraction from chat. Must be passed explicitly.
Hughes Decision: security, comfort, status, belonging, autonomy, identity
❌ Stored in DB (profile_hughes_decision) but never auto-detected from conversation. Only set by deep profile pipeline.
20 BCTs mapped. Formula:
barrier × stage × needs → BCT + NLP pattern
✅ Full lookup engine with NLP opener generation.
Schema exists. CRUD methods exist. But not called by api.py.
What should happen per session:
Multi-session BCT implementation plan. Different from Agenda Manager.
Templates: action_planning, habit_formation, awareness_building, social_restructuring
Each has 4 sessions with specific BCT targets and goals. Generated from bct_engine.generate_agenda().
0 tokens. Pre-written responses for common coaching scenarios. 6 skill categories × ~6 scenarios each.
Covers ~40% of coach interactions
$0.12/1M. Intent routing, scenario classification, parameter extraction.
google/gemma-4-31b-it via OpenRouter
$3/1M in, $15/1M out. Complex coaching, deep profile synthesis, expert triage.
anthropic/claude-sonnet-4-6 via OpenRouter
23 tables: profiles, coach_sessions, plans, inference_signals, profile_rapport, profile_maslow, profile_hughes_needs, profile_hughes_decision, profile_stage_change, profile_formative_years, recent_messages, etc.
PGLite + pgvector. Entity extraction, semantic search, knowledge graph. Used for long-term context recall.
MEMORY.md (2200 chars) + USER.md (1375 chars) injected into system prompt. SQLite FTS5 for full-text session search.
Restricted phrases for collectivist/multi-generational families:
All expert archetype responses include:
"⚠️ I'm an AI assistant, not a doctor. This information is for reference only. If you're experiencing a medical emergency, call 911."
| Gap | Severity | What Exists | What's Missing |
|---|---|---|---|
| Agenda wiring | HIGH | Schema + CRUD in profile.py | api.py doesn't load/inject/verify agenda per session |
| Barrier auto-detection | HIGH | BARRIER_ALIASES dict with keyword lists | No NLP extraction step in coach flow — barriers must be passed explicitly |
| Motivator auto-detection | HIGH | Hughes decision table in DB | Only set by deep profile pipeline — not extracted from individual messages |
| Cross-session action check | HIGH | complete_session_action() method | Coach doesn't check previous session's uncompleted actions |
| Big Five inference | MED | Schema + update_big_five() with EMA | Inference engine doesn't call it — no signal→trait mapping |
| Action archetype OpenRouter | MED | Router adapted for OpenRouter | Action param extraction still calls local Ollama endpoint |
| DISC / Attachment / Core Wound | MED | In web app profile-context.ts | Not in skill engine — only in production web app |
OiMy Platform · Cloud Architecture v2 · May 2026 · Tested on Hetzner 116.203.107.13