Files
obsidian-vault/wiki/entities/psychologist-app.md
T

97 lines
3.0 KiB
Markdown

---
title: AI Psychologist App (Nolvu)
created: '2026-05-25'
updated: '2026-05-25'
type: entity
namespace: personal
tags: [project, psychology, reflect-app, ios, startup]
sources:
- personal/projects/psychologist-app/session-design.md
- personal/projects/psychologist-app/analytics.md
- personal/projects/psychologist-app/onboarding-archetypes.md
confidence: medium
related:
- "[[personal-os-architecture]]"
- "[[concepts/executor-orchestrator]]"
---
# AI Psychologist App (Nolvu)
Mobile app providing AI-powered therapy sessions. Also referred to as
"reflect app" or "nolvu" in vault. Status: active development (May 2026).
## Architecture — Dual-Agent Session Design
Two-bot system handling a single user session:
```
Bot 1: Analyst ("Психолог")
→ analyzes user in 3rd person ("user avoids...")
→ generates 1-2 questions per batch
Bot 2: Narrator ("Посредник" / Mediator)
→ translates to 1st person ("you avoid?")
→ produces structured question JSON for UI
UI (deterministic algorithm)
→ serves questions one at a time
→ collects answers → passes numbered summary back to Analyst
```
**Key principle:** question delivery is a deterministic algorithm, not an LLM
call. Agent generates a batch once; UI manages sequencing.
## Session Flow
```
OPEN: character animation → intro (1-2 sentences + max 2 history hooks)
→ topic selection
DIALOGUE: Analyst generates questions (3rd person)
→ Narrator translates (1st person JSON)
→ UI queues → user answers → numbered summary → next batch
INSIGHT: Analyst crystallizes observation → Narrator reformulates for user
CLOSE: [backend] Analyst writes session summary + updates profile.md
Narrator: warm closing phrase + next session date
"One last thing" (optional open input) → close or reschedule flow
```
## State Persistence
Session state saved at every step (not only on close):
```json
{
"session_id": "2026-05-19",
"phase": "dialogue",
"current_question_idx": 2,
"answered": [...],
"last_activity_ts": 1747612800
}
```
Abandoned sessions (last_activity_ts > 20h, not closed): backend cron forces
partial close → Analyst writes partial summary → profile.md updated.
## Analytics — Privacy-First (GDPR)
- **No Google Analytics.** PostHog (self-hosted or EU Cloud, free tier).
- **Split identity:** `user_id``analytics_session_id` — no cross-table join.
- Demographics stored as buckets (age: 25-34, country: ISO code) — not PII.
- Never log: message text, questionnaire answers, full IP, timestamp+user_id pair.
Key funnel metric: **Session 1 completion rate** (target > 50%).
## Onboarding
"Resonance questionnaire" — cards with real audience voice phrases
(e.g. "Устала быть сильной") that encode 5 variables in 4 words.
User picks up to 2. Classification maps to archetype for session personalization.
## See Also
- [[concepts/executor-orchestrator]] — related multi-agent orchestration pattern
- [[personal-os-architecture]] — system context in which this is developed