[2026-05-16] psychologist-app: dev-setup.md
This commit is contained in:
@@ -5,16 +5,21 @@ status: complete
|
||||
# Wiki Curation — 2026-05-16
|
||||
|
||||
## Done
|
||||
|
||||
- **Conflict scan:** Scanned all .md files under ~/obsidian/ — no git conflict markers found ✅
|
||||
- **Previous run (2026-05-15):** Status = complete, no Unfinished section — nothing to resume
|
||||
- **Orientation:** Read SCHEMA.md, index.md, log.md — 15 pages in wiki, all in good shape
|
||||
- **Change detection:** Most recently modified files: `family/projects/media-toolbox-kraken.md` (session 7+8 updates — KP API domain fix, torrent work), `family/how-to/openmediavault-rpi5.md`, `family/how-to/htpc.md`
|
||||
- **Stale content fix:** `family/how-to/openmediavault-rpi5.md` — Step 13 (llm-wiki/Karpathy wiki) TODOs updated to ✅ (was showing 🔲, but wiki has been active since 2026-05-13); table row formatting also corrected (double `|` at start)
|
||||
- **Architecture check:** `personal-os-architecture.md` — current; Kraken image routing open issue already documented; media-pipeline project is family scope (not wiki scope per SCHEMA)
|
||||
- **Inbox:** `raw/inbox/` empty — nothing to process ✅
|
||||
- **Vault root triage:** No .md files in ~/obsidian/ root ✅
|
||||
- **Lint:** All 15 pages have frontmatter ✅; all 15 have wikilinks ✅; no orphans ✅; no broken links ✅; no pages over 200 lines ✅; no tags outside taxonomy ✅
|
||||
- **Index:** Bumped "Last updated" to 2026-05-16; page count unchanged at 15
|
||||
- **Previous run (2026-05-17):** Status = complete, no Unfinished section — nothing to resume
|
||||
- **Orientation:** Read SCHEMA.md, index.md, log.md — 15 wiki pages (discovered 16th below)
|
||||
- **Change detection:** Analyzed recent git commits — Russian-named family/personal wishlists already moved to proper locations; family/how-to/mesh-networks.md added (operational doc, not wiki-scope); work/wiki/ and work/briefs/ changes skipped per rules
|
||||
- **Vault root triage:** 1 non-empty file processed:
|
||||
- `Hermes calendar access.md` → `personal/projects/personal-os/hermes-calendar-access.md` (idea: add Google Calendar OAuth scope to Hermes with separate OAuth scope)
|
||||
- Committed immediately: `[2026-05-16] wiki-curation: triage vault root — 1 file moved`
|
||||
- **New wiki page discovered:** `user-profile.md` existed in wiki/ but was not in index.md — fixed:
|
||||
- Frontmatter corrected: added `namespace: personal`, `last_synced`, replaced `status` with `confidence: 0.9`
|
||||
- Added to index.md under new "User Profile" section
|
||||
- **Architecture check:** `personal-os-architecture.md` current — Mattermost migration and Kraken image routing issues still open/pending
|
||||
- **Inbox:** `raw/inbox/` empty ✅
|
||||
- **Lint:** 16 pages scanned; all frontmatter OK ✅; no orphans ✅; no broken wikilinks ✅; user-profile.md contains vault links to personal/family docs (not wiki pages — expected); all pages under 200 lines ✅
|
||||
- **Index:** Updated to 16 pages, last_updated 2026-05-16
|
||||
- **Log:** Appended 2026-05-16 entry to wiki/log.md
|
||||
|
||||
## Unfinished
|
||||
@@ -22,6 +27,6 @@ status: complete
|
||||
## Stats
|
||||
- Conflicts resolved: 0
|
||||
- Inbox processed: 0
|
||||
- Root files triaged: 0/0 (root is clean)
|
||||
- Pages updated: 1 (family/how-to/openmediavault-rpi5.md — stale TODOs fixed)
|
||||
- Root files triaged: 1/1 ✅
|
||||
- Pages updated: 2 (user-profile.md frontmatter, index.md)
|
||||
- Lint issues found: 0
|
||||
|
||||
@@ -0,0 +1,823 @@
|
||||
# Дизайн Анимированного Персонажа для AI-Компаньона (Психологическое Приложение)
|
||||
|
||||
> Исследование выполнено: май 2026
|
||||
> Контекст: персонаж — визуальное лицо AI-компаньона в приложении психологической рефлексии. Абстрактный (не человек, не робот). Реагирует на эмоции и голос пользователя.
|
||||
|
||||
---
|
||||
|
||||
## 1. Существующие Примеры Абстрактных AI Персонажей
|
||||
|
||||
### 1.1 Большие платформы
|
||||
|
||||
#### 🔵 Siri (Apple) — Waveform / Орб
|
||||
- **Эволюция**: Siri прошёл путь от простых волн (iOS 7–12) до живого светящегося шара (iOS 14+) и «гало» вокруг экрана (iOS 18/26)
|
||||
- **Что работает**: плавные цветовые переходы синий→фиолетовый→розовый ассоциируются с «думающим» AI без антропоморфизации
|
||||
- **Реализация**: Core Animation + Metal шейдеры; собственный рендер Apple
|
||||
- **Эмоциональный эффект**: пользователи воспринимают его как «живой», но не угрожающий (Reddit: r/ios26, обсуждение «Type to Siri Wavy Effect»)
|
||||
- **Референс**: [Apple Human Interface Guidelines — Siri](https://developer.apple.com/design/human-interface-guidelines/siri)
|
||||
|
||||
#### 🟡 Alexa (Amazon) — Кольцо/Ring
|
||||
- **Визуал**: круговое световое кольцо: синий = слушает, оранжевый = нет сети, фиолетовый = не беспокоить, белый = регулировка громкости
|
||||
- **Что работает**: семиотика цвета как язык состояний — пользователи быстро запоминают коды без слов
|
||||
- **Ограничение для нашего case**: слишком «железный», не подходит для эмпатийного контекста
|
||||
|
||||
#### 🔮 Google Assistant — Точки / G-шар
|
||||
- **Визуал**: 4 цветные точки (синяя, красная, жёлтая, зелёная), анимирующиеся в вол-ну при активации; позже — 3D светящийся «G»
|
||||
- **Что работает**: цветовая идентичность бренда, минимализм
|
||||
- **Ограничение**: слишком корпоративный, не тёплый
|
||||
|
||||
#### 🟢 ChatGPT (OpenAI) — Пульсирующий Шар
|
||||
- **Визуал**: анимированный чёрно-белый шар в голосовом режиме Canvas/voice mode; в web — простая анимация печатающегося текста
|
||||
- **Решение**: нейтральный ч/б орб не навязывает эмоцию — пользователь сам проецирует
|
||||
- **Реакция пользователей**: в Reddit threads (r/ChatGPT) отмечают, что голосовой орб ощущается «медитативно», снижает тревогу перед диалогом
|
||||
|
||||
#### 🔵 Microsoft Copilot — Градиентная Орбита
|
||||
- **Визуал**: анимированная орбита из синих и фиолетовых полос, морфирующая при ответе
|
||||
- **Что работает**: ощущение «умного движения», не угрожающего; подходит для рабочей среды
|
||||
|
||||
---
|
||||
|
||||
### 1.2 Mental Health / Медитация
|
||||
|
||||
#### 🧘 Headspace — «Andy» (апельсиновый шар)
|
||||
- **Визуал**: простой оранжевый круг с минимальными чертами лица (точки-глаза, дуга-рот)
|
||||
- **Степень абстракции**: умеренная — есть лицо, но без носа/ушей
|
||||
- **Что работает**: тёплый цвет = дружелюбие, округлость = безопасность
|
||||
- **Референс**: [Headspace Design System](https://www.headspace.com/design)
|
||||
- **Ограничение**: лицо делает его «детским» — не подходит для взрослой аудитории
|
||||
|
||||
#### 🌊 Calm — Анимированные Фоны
|
||||
- **Подход**: Calm отказался от персонажа-компаньона в пользу окружающей среды (вода, листья, луна)
|
||||
- **Вывод для нас**: персонаж должен быть частью «среды», а не отдельным элементом
|
||||
|
||||
#### 💜 Replika (AI Companion) — 3D Аватар
|
||||
- **Подход**: антропоморфный 3D аватар, настраиваемый пользователем
|
||||
- **Минус**: тревожная долина (Uncanny Valley), юридические и этические вопросы привязанности
|
||||
- **Вывод**: НЕ делать антропоморфный. Наш выбор абстракции — правильный
|
||||
|
||||
#### 🌿 Woebot — Минималистичный Робот
|
||||
- **Визуал**: простой квадратный «робот» с экраном-лицом
|
||||
- **Что работает**: простота снижает тревогу, неантропоморфность делает его «инструментом», а не «существом»
|
||||
- **Ограничение**: слишком «роботизированный» для эмпатийного контекста
|
||||
|
||||
---
|
||||
|
||||
### 1.3 Прочие Примеры
|
||||
|
||||
#### 🦜 Duolingo — Duo (сова) + Lily
|
||||
- **Duo**: антропоморфная сова — зелёная, с глазами; огромный успех с точки зрения вовлечённости
|
||||
- **Lily (AI Video Call, 2025)**: реализован в **Rive** — анимированный персонаж с state machine, живущий в видеозвонке
|
||||
- **Кейс-стади Rive**: Duolingo использует Rive для интерактивных персонажей, потому что state machine позволяет плавно переходить между сотнями эмоциональных состояний без написания кода вручную
|
||||
- **Вывод**: Rive — production-proven для персонажей в consumer apps
|
||||
|
||||
#### 🎵 Spotify Wrapped 2025
|
||||
- Реализован в Rive; дизайн отправляет в production интерактивную анимацию, код управляет данными
|
||||
- **Паттерн**: «design ships interaction in Rive, code drives it with data» — именно то, что нам нужно
|
||||
|
||||
#### 🤖 Notion AI — Спиннер-искры
|
||||
- **Визуал**: анимированные искры/частицы при генерации текста
|
||||
- **Что работает**: ощущение «творческой энергии», не агрессивное
|
||||
- **Минус**: статичный, нет эмоциональных состояний
|
||||
|
||||
---
|
||||
|
||||
## 2. Rive.app — Детальный Разбор
|
||||
|
||||
### 2.1 Что такое Rive и зачем он нам
|
||||
|
||||
Rive — это инструмент для создания **интерактивных, production-ready анимаций** с встроенной логикой через **State Machine**. В отличие от Lottie (только воспроизведение заранее заданной анимации), Rive позволяет:
|
||||
|
||||
- Управлять переходами между состояниями в реальном времени
|
||||
- Передавать данные из кода (амплитуда звука, состояние AI) прямо в дизайн
|
||||
- Дизайнер работает в редакторе → разработчик подключает `.riv` файл → интерактивность работает «из коробки»
|
||||
|
||||
**Ключевое преимущество для нашего случая**: голосовая реактивность реализуется через **Number input** в State Machine — разработчик передаёт значение (0.0–1.0 от амплитуды микрофона), дизайн реагирует без написания анимационного кода.
|
||||
|
||||
---
|
||||
|
||||
### 2.2 Rive для iOS — Техническая Интеграция
|
||||
|
||||
**Репозиторий**: [github.com/rive-app/rive-ios](https://github.com/rive-app/rive-ios)
|
||||
- 780 ⭐ | MIT License | v6.20.3 (май 2026) | 239 релизов
|
||||
|
||||
**Установка (Swift Package Manager — рекомендуется)**:
|
||||
```swift
|
||||
// Package.swift
|
||||
dependencies: [
|
||||
.package(url: "https://github.com/rive-app/rive-ios", from: "6.13.0")
|
||||
]
|
||||
```
|
||||
|
||||
**Требования**: iOS 14.0+, visionOS 1.0+, tvOS 16.0+, macOS 13.1+
|
||||
|
||||
**Минимальная интеграция в SwiftUI** (Legacy API — проще для начала):
|
||||
```swift
|
||||
import RiveRuntime
|
||||
|
||||
struct CharacterView: View {
|
||||
var body: some View {
|
||||
RiveViewModel(
|
||||
fileName: "ai_companion",
|
||||
stateMachineName: "EmotionMachine"
|
||||
).view()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Продвинутая интеграция (новый runtime, Swift Concurrency)**:
|
||||
```swift
|
||||
import RiveRuntime
|
||||
|
||||
struct CharacterView: View {
|
||||
@State private var riveView: RiveUIView?
|
||||
|
||||
var body: some View {
|
||||
AsyncRiveUIViewRepresentable {
|
||||
let worker = try await Worker()
|
||||
let file = try await File(source: .local("ai_companion", Bundle.main), worker: worker)
|
||||
return try await Rive(file: file)
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Управление через State Machine (Data Binding)**:
|
||||
```swift
|
||||
// Передача амплитуды микрофона → анимация
|
||||
let numberProp = viewModelInstance.numberProperty(fromPath: "audioAmplitude")!
|
||||
numberProp.value = Float(microphoneAmplitude) // 0.0...1.0
|
||||
|
||||
// Изменение эмоционального состояния
|
||||
let enumProp = viewModelInstance.enumProperty(fromPath: "emotionState")!
|
||||
enumProp.value = "thinking" // или "speaking", "listening", "happy", "concerned"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2.3 State Machine в Rive — Как Работает
|
||||
|
||||
**State Machine** — это граф состояний анимации с переходами.
|
||||
|
||||
**Для нашего персонажа**:
|
||||
```
|
||||
[Entry] → [Idle/Breathing] ↔ [Listening] ↔ [Thinking] ↔ [Speaking] ↔ [Happy] ↔ [Concerned]
|
||||
```
|
||||
|
||||
**Типы inputs**:
|
||||
| Тип | Использование |
|
||||
|-----|--------------|
|
||||
| `Boolean` | `isListening`, `isSpeaking`, `isThinking` |
|
||||
| `Number` | `audioAmplitude` (0.0–1.0), `emotionIntensity` |
|
||||
| `Trigger` | `onHappy`, `onConcerned`, `onGreet` |
|
||||
| `Enum` | `currentState` (idle/listen/think/speak/happy/concerned) |
|
||||
|
||||
**Settled State**: автоматически останавливает рендеринг когда нет активных переходов → экономит CPU/батарею. Для idle-анимации = зацикленная бесконечная анимация, которая продолжает работать.
|
||||
|
||||
**Playback управление**:
|
||||
```swift
|
||||
simpleVM.pause() // заморозить на текущем кадре
|
||||
simpleVM.play() // возобновить с текущей позиции
|
||||
simpleVM.stop() // сброс к начальному состоянию
|
||||
simpleVM.reset() // полный сброс state machine
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2.4 Голосовая Реактивность: Как Именно
|
||||
|
||||
**Схема реализации**:
|
||||
|
||||
1. **AVAudioEngine** (iOS) → получаем амплитуду микрофона в реальном времени
|
||||
2. Нормализуем: `amplitude = (rawValue + 160) / 160` (или другой масштаб)
|
||||
3. Передаём в Rive через Number property: `audioAmplitude = smoothedAmplitude`
|
||||
4. В Rive дизайнер привязывает это число к scale/radius/деформации blob
|
||||
|
||||
**Код для получения амплитуды**:
|
||||
```swift
|
||||
import AVFoundation
|
||||
|
||||
class MicrophoneMonitor: ObservableObject {
|
||||
private var audioEngine = AVAudioEngine()
|
||||
@Published var amplitude: Float = 0.0
|
||||
|
||||
func startMonitoring() {
|
||||
let inputNode = audioEngine.inputNode
|
||||
let recordingFormat = inputNode.outputFormat(forBus: 0)
|
||||
|
||||
inputNode.installTap(onBus: 0, bufferSize: 1024, format: recordingFormat) { buffer, _ in
|
||||
guard let channelData = buffer.floatChannelData else { return }
|
||||
let frameLength = Int(buffer.frameLength)
|
||||
let rms = sqrt(channelData[0][0..<frameLength].map { $0 * $0 }.reduce(0, +) / Float(frameLength))
|
||||
DispatchQueue.main.async {
|
||||
// Сглаживание (lerp) для избежания дёргания
|
||||
self.amplitude = self.amplitude * 0.7 + min(rms * 10, 1.0) * 0.3
|
||||
}
|
||||
}
|
||||
try? audioEngine.start()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**В SwiftUI — связка**:
|
||||
```swift
|
||||
struct CharacterContainer: View {
|
||||
@StateObject private var mic = MicrophoneMonitor()
|
||||
@State private var riveVM = RiveViewModel(fileName: "companion", stateMachineName: "Main")
|
||||
|
||||
var body: some View {
|
||||
riveVM.view()
|
||||
.onChange(of: mic.amplitude) { newValue in
|
||||
riveVM.setInput("audioAmplitude", value: newValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2.5 Rive Pricing для Indie Разработчика
|
||||
|
||||
| Тариф | Цена | Что важно |
|
||||
|-------|------|-----------|
|
||||
| **Free** | $0/мес | Редактор бесплатно, **нельзя экспортировать .riv** файлы для production |
|
||||
| **Cadet** | **$9/мес** (до 3 сидений) | ✅ Экспорт .riv файлов, неограниченные файлы, все State Machine фичи |
|
||||
| **Voyager** | $32/мес | Libraries, Embed URL hosting, до 25 сидений |
|
||||
| **Enterprise** | $120/мес | Для компаний $10M+ выручки |
|
||||
|
||||
**Вывод для indie**: **$9/мес (Cadet)** — это всё что нужно для MVP и production. Free можно использовать для прототипирования. Дизайнер тоже работает на Cadet или тебе передаёт .riv файл.
|
||||
|
||||
---
|
||||
|
||||
### 2.6 Lottie vs Rive — Сравнение для Нашего Use Case
|
||||
|
||||
| Критерий | Lottie | Rive |
|
||||
|----------|--------|------|
|
||||
| **Интерактивность** | ❌ Только воспроизведение | ✅ State Machine, inputs, data binding |
|
||||
| **Голосовая реактивность** | ❌ Невозможно нативно | ✅ Number input → real-time |
|
||||
| **Размер файла** | ~50–200KB | ~20–100KB (векторный .riv) |
|
||||
| **Производительность iOS** | Хорошая | Отличная (собственный рендерер на Metal) |
|
||||
| **Workflow дизайнер** | After Effects → экспорт JSON | Rive Editor (браузер/десктоп) |
|
||||
| **Стоимость для дизайнера** | AE нужен ($55/мес) | Rive Cadet $9/мес |
|
||||
| **Обучение разработчика** | 1–2 часа | 4–8 часов |
|
||||
| **Эмоциональные состояния** | Несколько файлов + код | 1 файл + state machine |
|
||||
| **Settled state** | ❌ | ✅ Экономия CPU |
|
||||
| **Итог для нашего проекта** | ❌ Не подходит | ✅ **Единственный правильный выбор** |
|
||||
|
||||
**Вердикт**: Lottie — для декоративных анимаций (иконки, сплэш-скрины). Rive — для **интерактивных персонажей с состояниями**. Наш use case = Rive без сомнений.
|
||||
|
||||
---
|
||||
|
||||
## 3. Четыре Концепта Персонажа
|
||||
|
||||
### 🟣 Концепт A: Дышащий Орб ⭐ РЕКОМЕНДУЕМЫЙ
|
||||
|
||||
**Визуал**: Сфера диаметром ~120–160pt, светящаяся изнутри, с мягким bloom-эффектом. Базовый цвет — глубокий индиго (#3D2B8F), с внутренним свечением меняющим оттенок по состоянию.
|
||||
|
||||
**5 состояний**:
|
||||
|
||||
| Состояние | Визуал | Цвет | Поведение |
|
||||
|-----------|--------|------|-----------|
|
||||
| **Idle/Breathing** | Медленное расширение-сжатие (±8%), 4 сек цикл | Индиго → тёмно-синий | Почти незаметное «дыхание» |
|
||||
| **Listening** | Лёгкая пульсация (синхронно с голосом), размер +голос/амплитуда | Синий → бирюзовый (#00C4CC) | Активная реакция на звук |
|
||||
| **Thinking** | Медленное вращение внутренних частиц/градиента, ±5% размер | Индиго → фиолетовый (#7B4FD4) | Внутреннее движение, «обработка» |
|
||||
| **Speaking** | Ритмичные волны-пульсы, согласованные с TTS | Тёплый фиолетовый (#9B59B6) | Лёгкие ряби от центра |
|
||||
| **Happy** | Быстрое «прыжковое» расширение (+20%), возврат | Тёплый персиковый (#FF6B6B → оранжевый) | Burst-эффект |
|
||||
| **Concerned** | Медленное сжатие (-10%), глубже цвет | Тёмно-синий (#1A237E) | Серьёзность, не пугающая |
|
||||
|
||||
**Техническая реализация в Rive**:
|
||||
1. Основная форма: эллипс с несколькими вложенными эллипсами (layered glow)
|
||||
2. Внутренний градиент: радиальный, управляется через Number input `colorShift`
|
||||
3. Размер: scale контролируется через `audioAmplitude` + дополнительные keyframe анимации для каждого состояния
|
||||
4. Bloom/glow: **Vector Feathering** в Rive (доступен с 2025) — нативный, без растра
|
||||
5. State machine: 1 Boolean `isActive` + 1 Number `audioAmplitude` + 1 Enum `emotionState`
|
||||
|
||||
**SwiftUI реализация** (если без Rive — чистый SwiftUI):
|
||||
```swift
|
||||
struct BreathingOrb: View {
|
||||
@State private var isPulsing = false
|
||||
@State private var audioAmplitude: CGFloat = 0
|
||||
var emotionColor: Color = .indigo
|
||||
|
||||
var body: some View {
|
||||
ZStack {
|
||||
// Внешнее свечение
|
||||
Circle()
|
||||
.fill(emotionColor.opacity(0.15))
|
||||
.frame(width: 200 + audioAmplitude * 40)
|
||||
.blur(radius: 20)
|
||||
// Средний слой
|
||||
Circle()
|
||||
.fill(
|
||||
RadialGradient(
|
||||
colors: [emotionColor.opacity(0.8), emotionColor],
|
||||
center: .center, startRadius: 10, endRadius: 70
|
||||
)
|
||||
)
|
||||
.frame(width: 130 + audioAmplitude * 30)
|
||||
.scaleEffect(isPulsing ? 1.05 : 0.97)
|
||||
// Внутренняя яркость
|
||||
Circle()
|
||||
.fill(Color.white.opacity(0.3))
|
||||
.frame(width: 50)
|
||||
.offset(x: -15, y: -15)
|
||||
.blur(radius: 8)
|
||||
}
|
||||
.animation(.easeInOut(duration: 2).repeatForever(autoreverses: true), value: isPulsing)
|
||||
.onAppear { isPulsing = true }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Эмоциональный тон**: спокойствие, присутствие, безопасность. Пользователь ощущает, что рядом «кто-то» — но не человек, не робот. «Существо света».
|
||||
|
||||
**Сложность реализации**:
|
||||
- DIY SwiftUI: **4/10** (можно сделать за день)
|
||||
- Rive с дизайнером: **6/10** (1–2 недели работы дизайнера)
|
||||
|
||||
---
|
||||
|
||||
### 🟡 Концепт B: Поле Частиц
|
||||
|
||||
**Визуал**: 50–200 светящихся точек диаметром 2–6pt, формирующих разные паттерны в зависимости от состояния.
|
||||
|
||||
**Состояния через паттерны**:
|
||||
- **Idle**: медленное дрейфование, как звёзды
|
||||
- **Listening**: частицы притягиваются к центру, образуя «ухо»-форму
|
||||
- **Thinking**: хаотичное кружение в определённой зоне
|
||||
- **Speaking**: волнообразное движение от центра
|
||||
- **Happy**: взрыв наружу + возврат
|
||||
|
||||
**Реализация голосовой реактивности**:
|
||||
```swift
|
||||
// SpriteKit или SwiftUI Canvas
|
||||
// audioAmplitude → силовое поле, отталкивающее частицы
|
||||
// Каждая частица: позиция = basePosition + sin(time + index) * amplitude * 20
|
||||
```
|
||||
|
||||
**Сложность**:
|
||||
- DIY SwiftUI Canvas/SpriteKit: **7/10**
|
||||
- Rive: **8/10** (частицы в Rive нетривиальны, лучше через Scripting/Luau)
|
||||
- **Metal**: 5/10 при наличии знаний Metal Shaders
|
||||
|
||||
**Плюсы**: ощущение интеллекта, «нейронная сеть», уникально
|
||||
**Минусы**: более сложная реализация, может отвлекать от рефлексии; плохо читается при нервозности пользователя
|
||||
|
||||
---
|
||||
|
||||
### 🟢 Концепт C: Флюидный Blob
|
||||
|
||||
**Визуал**: органическая морфирующая форма — как капля ртути или живая клетка. Постоянно деформируется, «перетекает».
|
||||
|
||||
**Референсы в продуктах**:
|
||||
- **iOS 17 Dynamic Island** — blob-морфинг для уведомлений → пользователи полюбили
|
||||
- **Headspace «sleep sounds»** анимации — флюидные формы воды
|
||||
- **Adobe Creative Cloud** онбординг (2021) — морфирующие blob-переходы
|
||||
|
||||
**Реализация**:
|
||||
|
||||
*Вариант 1 — SwiftUI Canvas + CGPath*:
|
||||
```swift
|
||||
// Генерация blob через control points
|
||||
func blobPath(points: [CGPoint], smoothing: CGFloat) -> Path {
|
||||
// Catmull-Rom сплайны между точками
|
||||
// audioAmplitude → смещение контрольных точек
|
||||
}
|
||||
```
|
||||
|
||||
*Вариант 2 — Metal Shader (лучший результат)*:
|
||||
```metal
|
||||
// Метаболы (metaballs) — классическая техника для blob
|
||||
// distance = sqrt(dx*dx + dy*dy)
|
||||
// field += radius*radius / distance
|
||||
// Если field > threshold → рисуем пиксель
|
||||
```
|
||||
|
||||
*Вариант 3 — Rive с mesh deformation*:
|
||||
- Rive поддерживает **Meshes** (деформация сетки) — дизайнер создаёт blob-форму, задаёт точки деформации, управляемые через inputs
|
||||
- Сложность в Rive: **8/10**
|
||||
|
||||
**Голосовая реактивность**: amплитуда → displacement map → blob «вздрагивает» синхронно с речью
|
||||
|
||||
**Плюсы**: максимальная «живость», визуально уникален, метафора «жидкого интеллекта»
|
||||
**Минусы**: сложная реализация без дизайнера, может вызывать тревогу (нестабильная форма ≠ спокойствие)
|
||||
|
||||
**Сложность**: DIY Metal: **8/10**, DIY SwiftUI: **6/10**, Rive с дизайнером: **7/10**
|
||||
|
||||
---
|
||||
|
||||
### 🔵 Концепт D: Аудио-Волна
|
||||
|
||||
**Визуал**: waveform-визуализация, реагирующая на голос — как старый Siri (iOS 7–9) или осциллограф.
|
||||
|
||||
**Варианты формы**:
|
||||
- Классическая waveform (вертикальные полосы переменной высоты)
|
||||
- Синусоида (гладкая волна)
|
||||
- Круговая waveform (волна по окружности)
|
||||
- «Сердцебиение» (EKG-стиль)
|
||||
|
||||
**SwiftUI реализация (круговая)**:
|
||||
```swift
|
||||
struct AudioWaveformView: View {
|
||||
var amplitudes: [Float] // массив ~64 значений
|
||||
var color: Color = .purple
|
||||
|
||||
var body: some View {
|
||||
Canvas { context, size in
|
||||
let center = CGPoint(x: size.width/2, y: size.height/2)
|
||||
let baseRadius: CGFloat = 60
|
||||
|
||||
var path = Path()
|
||||
for (i, amp) in amplitudes.enumerated() {
|
||||
let angle = Double(i) / Double(amplitudes.count) * 2 * .pi
|
||||
let r = baseRadius + CGFloat(amp) * 40
|
||||
let x = center.x + cos(angle) * r
|
||||
let y = center.y + sin(angle) * r
|
||||
if i == 0 { path.move(to: CGPoint(x: x, y: y)) }
|
||||
else { path.addLine(to: CGPoint(x: x, y: y)) }
|
||||
}
|
||||
path.closeSubpath()
|
||||
context.fill(path, with: .color(color.opacity(0.7)))
|
||||
context.stroke(path, with: .color(color), lineWidth: 2)
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Плюсы**:
|
||||
- Максимально простая реализация (DIY: **2/10**)
|
||||
- Мгновенная связь аудио → визуал понятна пользователю
|
||||
- Ощущение «технологичности»
|
||||
|
||||
**Минусы для психологического контекста**:
|
||||
- **Холодный, технический** — не тёплый
|
||||
- Siri давно переехал от waveform именно потому что она не вызывала эмпатии
|
||||
- Плохо передаёт «мышление» — только «говорение»/«слушание»
|
||||
- Нет визуального способа показать «обеспокоенность» или «радость»
|
||||
|
||||
**Вывод**: Концепт D хорош как **дополнительный элемент** (показывать waveform голоса пользователя внизу экрана), но НЕ как основной персонаж.
|
||||
|
||||
---
|
||||
|
||||
## 4. Поиск Motion Дизайнера
|
||||
|
||||
### 4.1 Где Искать
|
||||
|
||||
| Платформа | Специфика | Ссылка |
|
||||
|-----------|-----------|--------|
|
||||
| **Rive Marketplace «For Hire»** | Дизайнеры специально рекламируют Rive-навыки | [rive.app/marketplace/for-hire](https://rive.app/marketplace/for-hire/) |
|
||||
| **Twitter/X @rive_app** | Официальный аккаунт; в ответах и RT часто появляются авторы | twitter.com/rive_app |
|
||||
| **Dribbble #rive** | Фильтр по тегу; смотри работы со state machine видео | dribbble.com/tags/rive |
|
||||
| **Upwork** | Поиск «Rive animation designer»; ~$30–80/час | upwork.com |
|
||||
| **Toptal** | Топ 3% фрилансеров; $80–150/час; медленный онбординг | toptal.com |
|
||||
| **Discord Rive Community** | #for-hire канал; сообщество ~15K человек | discord.com/invite/FGjmaTr |
|
||||
| **Behance** | Поиск «Rive character animation»; не всегда указывают Rive явно | behance.net |
|
||||
| **LinkedIn** | «Rive motion designer iOS» → фильтр по навыкам | linkedin.com |
|
||||
|
||||
**Самый быстрый путь**: Rive Discord #for-hire + Rive Marketplace For Hire
|
||||
|
||||
---
|
||||
|
||||
### 4.2 Шаблон Брифа для Motion Дизайнера
|
||||
|
||||
```markdown
|
||||
## Проект: AI-компаньон для приложения психологической рефлексии
|
||||
|
||||
### Контекст
|
||||
Мобильное приложение (iOS/Android) для ежедневной психологической рефлексии с AI-компаньоном.
|
||||
Аудитория: взрослые 25–45 лет, работают со стрессом, ищут поддержку.
|
||||
|
||||
### Задача
|
||||
Разработать абстрактного анимированного персонажа — визуальное лицо AI-компаньона.
|
||||
|
||||
**НЕ**: человек, робот, животное.
|
||||
**ДА**: орб, blob, абстрактная форма — тёплая, живая, доверительная.
|
||||
|
||||
### Концепт (базовый)
|
||||
[Концепт A: Дышащий орб] — светящаяся сфера ~140pt, с мягким bloom-эффектом.
|
||||
Референсы: ChatGPT voice mode orb, Apple Siri (iOS 16), Headspace Andy (стиль — не копия).
|
||||
|
||||
### Состояния (5 обязательных + idle)
|
||||
1. **Idle/Breathing** — медленное дыхание, базовый цвет (индиго/фиолетовый)
|
||||
2. **Listening** — реактивный к амплитуде звука через Number input `audioAmplitude` (0.0–1.0)
|
||||
3. **Thinking** — внутреннее движение, «обрабатываю»
|
||||
4. **Speaking** — пульс/волны при TTS
|
||||
5. **Happy/Positive** — тёплый burst
|
||||
6. **Concerned/Serious** — сдержанность, глубокий цвет
|
||||
|
||||
### Технические требования
|
||||
- **Инструмент**: Rive (обязательно)
|
||||
- **Deliverable**: `.riv` файл с настроенной State Machine
|
||||
- **State Machine inputs**:
|
||||
- `audioAmplitude` (Number, 0.0–1.0) — голосовая реактивность
|
||||
- `emotionState` (Enum: idle/listening/thinking/speaking/happy/concerned)
|
||||
- **Размер артборда**: 300×300pt (векторный, масштабируемый)
|
||||
- **Производительность**: файл должен работать в 60fps на iPhone 12 и новее
|
||||
- Использовать Vector Feathering для glow (не PNG/растр)
|
||||
|
||||
### Что включает deliverable
|
||||
- [ ] Концепт (2–3 варианта визуала) — для согласования
|
||||
- [ ] Финальный `.riv` файл со state machine
|
||||
- [ ] Короткое видео-демо всех состояний (GIF или MP4)
|
||||
- [ ] Инструкция по inputs для разработчика (1 страница)
|
||||
|
||||
### Бюджет ориентировочно
|
||||
$300–600 (уточняем после концепта)
|
||||
|
||||
### Сроки
|
||||
Концепт: 3–5 дней
|
||||
Финальный файл: 7–14 дней после согласования
|
||||
|
||||
### Контакт / Портфолио
|
||||
Прошу показать примеры работ с Rive State Machine (не просто Lottie/AE).
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4.3 Реалистичная Стоимость
|
||||
|
||||
| Уровень дизайнера | Профиль | Концепт + 5 состояний + .riv | Сроки |
|
||||
|-------------------|---------|------------------------------|-------|
|
||||
| **Junior Rive** | Upwork, 1–2 года опыта | $150–300 | 10–21 день |
|
||||
| **Mid-level** | Upwork/Dribbble, портфолио Rive | **$300–600** ✅ *sweet spot* | 7–14 дней |
|
||||
| **Senior/Студия** | Toptal, известные имена | $800–2000+ | 14–30 дней |
|
||||
| **Готовый шаблон** | Marketplace + кастомизация | $0–50 + $100–200 dev time | 2–5 дней |
|
||||
|
||||
**Реалистичная цена для MVP**: **$300–500** за полный пакет (концепт + 5 состояний + .riv файл)
|
||||
|
||||
---
|
||||
|
||||
### 4.4 Готовые Персонажи на Маркетплейсах
|
||||
|
||||
**Rive Marketplace** ([rive.app/marketplace](https://rive.app/marketplace)):
|
||||
- Теги для поиска: `orb`, `blob`, `character`, `loader`, `mascot`
|
||||
- Большинство файлов **бесплатны** для просмотра/ремикса с attribution
|
||||
- Некоторые продаются за $5–30
|
||||
|
||||
**Рекомендуемый поиск**:
|
||||
- `site:rive.app/community orb animation`
|
||||
- `site:rive.app/community blob character state machine`
|
||||
|
||||
**LottieFiles** (для Lottie) — не подходит для нашего interactive use case, но можно найти вдохновение: lottiefiles.com/search?q=orb+ai+character
|
||||
|
||||
**Другие источники готовых Rive файлов**:
|
||||
- **awesome-rive**: [github.com/rive-app/awesome-rive](https://github.com/rive-app/awesome-rive) — кураторский список
|
||||
- **Gumroad** + поиск «Rive character»
|
||||
- **Creative Market** + поиск «Rive animation»
|
||||
|
||||
---
|
||||
|
||||
## 5. DIY Вариант
|
||||
|
||||
### 5.1 Можно ли Без Дизайнера?
|
||||
|
||||
**Да, и вот почему это разумно для TestFlight MVP**:
|
||||
- Для бета-тестирования важно проверить *концепцию взаимодействия*, а не полировку
|
||||
- SwiftUI Canvas + TimelineView позволяет сделать «достаточно хороший» орб за 1–2 дня
|
||||
- После валидации концепции → нанять дизайнера для production-версии
|
||||
|
||||
### 5.2 Минимальная Версия для TestFlight
|
||||
|
||||
**Что должна уметь (MVP)**:
|
||||
- [x] Визуально отличаться в 3+ состояниях (idle, listening, speaking)
|
||||
- [x] Реагировать на амплитуду микрофона (пульс/размер)
|
||||
- [x] Плавные переходы между состояниями (withAnimation + ease)
|
||||
- [x] Работать в 60fps без прыжков
|
||||
- [x] Не выглядеть «сломанной» при любом сценарии
|
||||
|
||||
**Что НЕ нужно для MVP**:
|
||||
- Профессиональный Rive-файл
|
||||
- Все 6 эмоциональных состояний
|
||||
- Идеальный bloom/glow
|
||||
|
||||
### 5.3 Полный SwiftUI Орб — Структура Кода
|
||||
|
||||
```swift
|
||||
import SwiftUI
|
||||
import AVFoundation
|
||||
|
||||
// MARK: - Состояния персонажа
|
||||
enum CompanionState {
|
||||
case idle, listening, thinking, speaking, happy, concerned
|
||||
|
||||
var color: Color {
|
||||
switch self {
|
||||
case .idle: return Color(hex: "#3D2B8F") // индиго
|
||||
case .listening: return Color(hex: "#00C4CC") // бирюзовый
|
||||
case .thinking: return Color(hex: "#7B4FD4") // фиолетовый
|
||||
case .speaking: return Color(hex: "#9B59B6") // тёплый фиолетовый
|
||||
case .happy: return Color(hex: "#FF6B6B") // персиковый
|
||||
case .concerned: return Color(hex: "#1A237E") // тёмно-синий
|
||||
}
|
||||
}
|
||||
|
||||
var pulseSpeed: Double {
|
||||
switch self {
|
||||
case .idle: return 3.0
|
||||
case .listening: return 1.5
|
||||
case .thinking: return 2.0
|
||||
case .speaking: return 0.8
|
||||
case .happy: return 0.5
|
||||
case .concerned: return 4.0
|
||||
}
|
||||
}
|
||||
|
||||
var baseScale: CGFloat {
|
||||
switch self {
|
||||
case .idle: return 1.0
|
||||
case .listening: return 1.05
|
||||
case .thinking: return 0.97
|
||||
case .speaking: return 1.03
|
||||
case .happy: return 1.15
|
||||
case .concerned: return 0.92
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Орб
|
||||
struct CompanionOrbView: View {
|
||||
var state: CompanionState
|
||||
var audioAmplitude: Float // 0.0...1.0
|
||||
|
||||
@State private var isBreathing = false
|
||||
@State private var rotationAngle: Double = 0
|
||||
|
||||
private let baseSize: CGFloat = 130
|
||||
|
||||
var body: some View {
|
||||
let amplitudeBoost = CGFloat(audioAmplitude) * 35
|
||||
let currentSize = baseSize * state.baseScale + amplitudeBoost
|
||||
|
||||
ZStack {
|
||||
// Слой 3: дальнее свечение
|
||||
Circle()
|
||||
.fill(state.color.opacity(0.08))
|
||||
.frame(width: currentSize + 70)
|
||||
.blur(radius: 30)
|
||||
|
||||
// Слой 2: среднее свечение
|
||||
Circle()
|
||||
.fill(state.color.opacity(0.2))
|
||||
.frame(width: currentSize + 30)
|
||||
.blur(radius: 15)
|
||||
|
||||
// Слой 1: основной орб
|
||||
Circle()
|
||||
.fill(
|
||||
RadialGradient(
|
||||
colors: [
|
||||
state.color.opacity(0.6),
|
||||
state.color,
|
||||
state.color.opacity(0.85)
|
||||
],
|
||||
center: .init(x: 0.35, y: 0.3),
|
||||
startRadius: 5,
|
||||
endRadius: currentSize / 2
|
||||
)
|
||||
)
|
||||
.frame(width: currentSize, height: currentSize)
|
||||
.scaleEffect(isBreathing ? 1.04 : 0.97)
|
||||
|
||||
// Внутренний блик (имитация 3D)
|
||||
Ellipse()
|
||||
.fill(
|
||||
LinearGradient(
|
||||
colors: [.white.opacity(0.4), .clear],
|
||||
startPoint: .topLeading,
|
||||
endPoint: .bottomTrailing
|
||||
)
|
||||
)
|
||||
.frame(width: currentSize * 0.45, height: currentSize * 0.25)
|
||||
.offset(x: -currentSize * 0.12, y: -currentSize * 0.18)
|
||||
.blur(radius: 4)
|
||||
|
||||
// Вращающийся внутренний элемент (для состояния "thinking")
|
||||
if state == .thinking {
|
||||
Circle()
|
||||
.trim(from: 0, to: 0.3)
|
||||
.stroke(state.color.opacity(0.5), lineWidth: 2)
|
||||
.frame(width: currentSize * 0.6)
|
||||
.rotationEffect(.degrees(rotationAngle))
|
||||
}
|
||||
}
|
||||
.animation(
|
||||
.easeInOut(duration: state.pulseSpeed).repeatForever(autoreverses: true),
|
||||
value: isBreathing
|
||||
)
|
||||
.animation(.easeInOut(duration: 0.4), value: state)
|
||||
.animation(.linear(duration: 0.05), value: audioAmplitude)
|
||||
.onAppear {
|
||||
isBreathing = true
|
||||
withAnimation(.linear(duration: 2).repeatForever(autoreverses: false)) {
|
||||
rotationAngle = 360
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Контейнер с микрофоном
|
||||
struct CompanionContainer: View {
|
||||
@StateObject private var mic = MicrophoneMonitor()
|
||||
@State var companionState: CompanionState = .idle
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
Spacer()
|
||||
CompanionOrbView(state: companionState, audioAmplitude: mic.amplitude)
|
||||
.frame(width: 220, height: 220)
|
||||
Spacer()
|
||||
}
|
||||
.background(Color(hex: "#0D0D1A")) // тёмный фон
|
||||
.onAppear { mic.startMonitoring() }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Оценка результата без дизайнера**: 6.5/10 — выглядит профессионально для бета-тестирования при правильно подобранных цветах.
|
||||
|
||||
---
|
||||
|
||||
## 6. Сводная Таблица Концептов
|
||||
|
||||
| Критерий | A: Орб | B: Частицы | C: Blob | D: Waveform |
|
||||
|----------|--------|-----------|---------|-------------|
|
||||
| Эмоциональное тепло | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ |
|
||||
| DIY сложность | **4/10** | 7/10 | 6/10 | 2/10 |
|
||||
| Голосовая реактивность | ✅ Отлично | ✅ Хорошо | ✅ Хорошо | ✅ Отлично |
|
||||
| Rive реализация | 6/10 | 8/10 | 7/10 | 3/10 |
|
||||
| Для психологии | ✅✅✅ | ✅✅ | ✅✅ | ⚠️ |
|
||||
| Уникальность | Средняя | Высокая | Высокая | Низкая |
|
||||
| Стоимость дизайнера | $300–500 | $400–700 | $400–600 | $150–300 |
|
||||
|
||||
---
|
||||
|
||||
## 7. ✅ Рекомендация и Следующие Шаги
|
||||
|
||||
### Рекомендованный Концепт: **A (Дышащий Орб) с элементами C (Blob)**
|
||||
|
||||
**Почему**:
|
||||
1. Орб — самый доказанный паттерн (Siri, ChatGPT, Alexa) — пользователи уже знают этот «язык»
|
||||
2. Добавление slight fluid-деформации (±blob) делает его уникальным и «живым»
|
||||
3. Лучший баланс тепла + технологичности для психологического контекста
|
||||
4. Реалистичен для DIY MVP
|
||||
5. Хорошо масштабируется до профессиональной Rive-версии
|
||||
|
||||
**Цветовая палитра**:
|
||||
- Base: `#3D2B8F` (тёмный индиго)
|
||||
- Listening: `#00C4CC` (бирюзовый)
|
||||
- Thinking: `#7B4FD4` (фиолетовый)
|
||||
- Speaking: `#9B59B6`
|
||||
- Happy: `#FF6B6B`
|
||||
- Concerned: `#1A237E`
|
||||
- Background: `#0D0D1A` (почти чёрный)
|
||||
|
||||
---
|
||||
|
||||
### Путь 1: DIY для TestFlight (Рекомендую НАЧАТЬ ЗДЕСЬ)
|
||||
|
||||
**Что делать**:
|
||||
1. Реализовать SwiftUI орб из кода выше (1–2 дня)
|
||||
2. Подключить AVAudioEngine (1 день)
|
||||
3. Добавить 3 состояния: idle / listening / speaking (1 день)
|
||||
4. Запустить TestFlight бета, собрать отзывы (2 недели)
|
||||
5. Решить — нанимать дизайнера или нет
|
||||
|
||||
**Стоимость**: $0 (только время разработчика)
|
||||
**Срок до TestFlight**: ~5–7 дней
|
||||
|
||||
---
|
||||
|
||||
### Путь 2: Hire Motion Designer (После Валидации Концепции)
|
||||
|
||||
**Когда нанимать**: после того как бета подтвердит что персонаж нужен и работает
|
||||
**Где искать**: Rive Discord #for-hire → Rive Marketplace for-hire → Upwork
|
||||
|
||||
**Бюджет**: $400–600 за полный пакет
|
||||
**Что получить**: концепт (2–3 варианта) + .riv файл + state machine + инструкция
|
||||
|
||||
**Конкретные шаги**:
|
||||
1. Написать бриф по шаблону выше
|
||||
2. Разместить в Rive Discord #for-hire
|
||||
3. Попросить показать работы именно с Rive State Machine
|
||||
4. Начать с концепта ($50–100 за концепт) → подтвердить → финальный файл
|
||||
|
||||
---
|
||||
|
||||
### Инструменты и Ресурсы
|
||||
|
||||
| Ресурс | Ссылка |
|
||||
|--------|--------|
|
||||
| Rive Editor (бесплатно) | editor.rive.app |
|
||||
| Rive iOS Runtime | github.com/rive-app/rive-ios |
|
||||
| Rive Docs iOS | rive.app/docs/runtimes/apple/apple |
|
||||
| Rive Docs State Machine | rive.app/docs/runtimes/state-machines |
|
||||
| Rive Community Discord | discord.com/invite/FGjmaTr |
|
||||
| Rive Marketplace | rive.app/marketplace |
|
||||
| awesome-rive | github.com/rive-app/awesome-rive |
|
||||
| Видео: Build iOS App with Rive (DesignCode, 187K views) | youtube.com/watch?v=h4vyOz4Tztg |
|
||||
| Видео: Build Interactive Characters in Rive (67K views) | youtube.com/watch?v=-vuQvvFiR8s |
|
||||
| Видео: Glowing Jellyfish (blob референс) | youtube.com/watch?v=4oH0jV-L-dU |
|
||||
| Видео: Rive State Machine Tutorial | youtube.com/watch?v=oDhdGmXco00 |
|
||||
|
||||
---
|
||||
|
||||
*Документ создан агентом исследования. Обновить после TestFlight бета (2 недели).*
|
||||
@@ -0,0 +1,152 @@
|
||||
---
|
||||
created: '2026-05-16'
|
||||
updated: '2026-05-16'
|
||||
tags:
|
||||
- project
|
||||
- dev
|
||||
- ios
|
||||
- swift
|
||||
---
|
||||
# Reflect App — Dev Setup & Architecture
|
||||
|
||||
> Путь: `~/Developer/reflect-app/`
|
||||
> Статус: BUILD SUCCEEDED, 30/30 тестов
|
||||
|
||||
---
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
reflect-app/
|
||||
├── project.yml ← XcodeGen spec (генерирует .xcodeproj)
|
||||
├── proxy_server.py ← Local AI proxy server (Mac → iPhone)
|
||||
├── ReflectApp/
|
||||
│ ├── Models/
|
||||
│ │ ├── CrisisKeywords.swift
|
||||
│ │ ├── Message.swift
|
||||
│ │ ├── Session.swift
|
||||
│ │ └── UserProfile.swift
|
||||
│ ├── Services/
|
||||
│ │ ├── ClaudeService.swift ← AI бэкенд (cloud + local proxy)
|
||||
│ │ ├── AnalystBot.swift ← Бот 2 (Sonnet, CBT вопросы)
|
||||
│ │ ├── NarratorBot.swift ← Бот 1 (Haiku, 3rd-person reframe)
|
||||
│ │ ├── CrisisDetector.swift ← Hardcoded SI/SH детекция (RU+EN)
|
||||
│ │ ├── ProfileManager.swift ← Obsidian-like on-device vault
|
||||
│ │ └── SessionScheduler.swift ← Напоминания (UNUserNotificationCenter)
|
||||
│ ├── Views/
|
||||
│ │ ├── OnboardingView.swift ← 3 слайда + 5 вопросов + инсайт
|
||||
│ │ ├── HomeView.swift
|
||||
│ │ ├── SessionView.swift
|
||||
│ │ ├── CrisisView.swift
|
||||
│ │ ├── ProfileView.swift ← Obsidian-like markdown viewer
|
||||
│ │ ├── SettingsView.swift ← Выбор бэкенда + API key + server URL
|
||||
│ │ ├── CardView.swift
|
||||
│ │ └── OrbCharacter.swift ← SwiftUI анимированный орб
|
||||
│ └── ViewModels/
|
||||
│ ├── HomeViewModel.swift
|
||||
│ └── SessionViewModel.swift
|
||||
└── ReflectAppTests/
|
||||
└── ReflectAppTests.swift ← 30 тестов
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Генерация проекта
|
||||
|
||||
```bash
|
||||
# Установить XcodeGen (один раз)
|
||||
brew install xcodegen
|
||||
|
||||
# Регенерировать .xcodeproj после изменения project.yml
|
||||
cd ~/Developer/reflect-app
|
||||
xcodegen generate
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Сборка и тесты
|
||||
|
||||
```bash
|
||||
# Узнать ID симулятора
|
||||
xcrun simctl list devices | grep "iPhone 16 Pro"
|
||||
|
||||
# Сборка
|
||||
xcodebuild -project ReflectApp.xcodeproj -scheme ReflectApp \
|
||||
-destination "id=9FF2D6A8-E0DF-4157-9FA5-463E45BB5FAD" build
|
||||
|
||||
# Тесты (30 тестов, ~0.1 сек)
|
||||
xcodebuild test -project ReflectApp.xcodeproj -scheme ReflectApp \
|
||||
-destination "id=9FF2D6A8-E0DF-4157-9FA5-463E45BB5FAD"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Локальный AI сервер (режим без ключа)
|
||||
|
||||
### Запуск (Ollama — локальная модель)
|
||||
|
||||
```bash
|
||||
# Сервер слушает на всех интерфейсах, показывает LAN IP
|
||||
cd ~/Developer/reflect-app
|
||||
python3 proxy_server.py --backend ollama --ollama-model qwen2.5:7b
|
||||
|
||||
# Или с Claude API
|
||||
export ANTHROPIC_API_KEY=sk-ant-...
|
||||
python3 proxy_server.py --backend claude
|
||||
```
|
||||
|
||||
### Настройка на iPhone
|
||||
|
||||
1. Открыть приложение → шестерёнка (Settings)
|
||||
2. AI Backend → "Локальный сервер (Mac)"
|
||||
3. URL сервера: скопировать из вывода `proxy_server.py`
|
||||
4. Нажать "Проверить" — должно показать "Доступен · qwen2.5:7b"
|
||||
|
||||
### Архитектура proxy
|
||||
|
||||
```
|
||||
iPhone (ClaudeService)
|
||||
→ POST /v1/messages → proxy_server.py (8765)
|
||||
→ Anthropic API format → Ollama (11434)
|
||||
← response ← Ollama response (конвертируется в Anthropic формат)
|
||||
← response ← proxy_server.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Архитектура двойного бота
|
||||
|
||||
```
|
||||
User input (1-е лицо)
|
||||
↓
|
||||
CrisisDetector.detect() — hardcoded, <5ms
|
||||
↓ (если .critical → CrisisView)
|
||||
NarratorBot (Haiku) — переформулировка в 3-е лицо
|
||||
↓
|
||||
AnalystBot (Sonnet) — читает profile.md + вопросы
|
||||
↓
|
||||
CardView с вопросами
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## On-device хранилище (Obsidian-like)
|
||||
|
||||
```
|
||||
Documents/UserProfile/
|
||||
├── profile.md ← паттерны, наблюдения, прогресс
|
||||
├── insights.md ← кристаллизованные инсайты
|
||||
└── sessions/
|
||||
├── 2026-05-16.md
|
||||
└── ...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Тест-результаты (2026-05-16)
|
||||
|
||||
- ClaudeServiceTests: 4/4
|
||||
- CrisisDetectorTests: 17/17 (включая RU+EN, нормализация)
|
||||
- ProfileManagerTests: 6/6 (включая onboarding init)
|
||||
- SessionSchedulerTests: 3/3
|
||||
- **ИТОГО: 30/30, 0 failures**
|
||||
@@ -0,0 +1,686 @@
|
||||
# Конкурентный анализ рынка AI-приложений для психологической рефлексии и ментального здоровья
|
||||
|
||||
**Дата:** 16 мая 2026
|
||||
**Статус:** Полный анализ (автоматический cron-отчёт)
|
||||
**Целевые рынки:** RU/KZ/KG + EN (US/UK)
|
||||
**Контекст:** Анализ конкурентной среды для AI-компаньона с anti-sycophancy архитектурой
|
||||
|
||||
---
|
||||
|
||||
## 1. Размер рынка и ключевые цифры
|
||||
|
||||
| Сегмент | Размер 2024 | Прогноз 2030-2034 | CAGR |
|
||||
|---------|------------|-------------------|------|
|
||||
| Глобальный рынок mental health apps | $7.48 млрд | $17.52 млрд (2030) | 14.6% |
|
||||
| AI-сегмент mental health | $1.5 млрд | $25.1 млрд (2034) | **32%** |
|
||||
| Chatbot-based mental health apps | $1.88 млрд | $7.57 млрд (2033) | 16.5% |
|
||||
| US chatbot mental health apps | $618 млн | рост с CAGR 14.5% | 14.5% |
|
||||
|
||||
> **Вывод:** Рынок AI ментального здоровья растёт быстрее всего остального — 32% CAGR. Но лидеры первого поколения (Calm, Headspace, Woebot) **уже на спаде**. Окно для нового игрока открыто.
|
||||
|
||||
---
|
||||
|
||||
## 2. Карта конкурентов (сводная таблица)
|
||||
|
||||
| Приложение | Сегмент | Пользователи | Выручка | Цена/мес | Платформы | Рейтинг |
|
||||
|-----------|---------|-------------|---------|----------|-----------|---------|
|
||||
| **Calm** | Медитация | 140M+ загрузок, 3.5M подписчиков | $210M (2025, ↓) | $14.99 | iOS/Android/Web | 4.8 |
|
||||
| **Headspace** | Медитация | 85M+ загрузок, 2M подписчиков | $140M (2025, ↓) | $12.99 | iOS/Android/Web | 4.9 |
|
||||
| **Replika** | AI-компаньон | 40M польз., 2M MAU | $24-30M | $19.99 | iOS/Android/Oculus | 4.2-4.3 |
|
||||
| **Woebot** | CBT-чатбот | 1.5M польз. | н/д | Free | iOS/Android | н/а |
|
||||
| **Wysa** | Clinical AI | 6M польз., 105 стран | $1-10M (B2B) | Enterprise | iOS/Android/Web | н/д |
|
||||
| **Mindsera** | AI-журнал | 80K+, 168 стран | н/д | $14.99 | iOS/Android/Web | н/д |
|
||||
| **Rosebud** | AI-журнал | 100-150K | н/д | $12.99 | iOS/Android | 4.9 (5K+ отзывов) |
|
||||
| **Deepwander** | Рефлексия | Малый | н/д | ~$9-12 | Web/Mobile | н/д |
|
||||
| **Elomia** | Clinical AI | 4.7M+ сообщений | н/д | Enterprise | iOS/Android/Web | н/д |
|
||||
| **Youper** | CBT-чатбот | Малый-средний | н/д | Freemium | iOS/Android | н/д |
|
||||
| **MindHealth (RU)** | КПТ-дневник | 10K (RuStore) | н/д | Freemium | iOS/Android/RuStore | н/д |
|
||||
| **Mo (RU)** | Медитация | н/д | н/д | Подписка | iOS/Android | н/д |
|
||||
| **Prosto (RU)** | Медитация | н/д | н/д | Подписка | iOS/Android | н/д |
|
||||
| **Thera (RU)** | Дневник эмоций | н/д | н/д | Неделя/год | iOS/Android | н/д |
|
||||
|
||||
---
|
||||
|
||||
## 3. Детальные карточки конкурентов
|
||||
|
||||
### 🔴 WOEBOT (ЗАКРЫТ 30 июня 2025)
|
||||
|
||||
**Статус:** ❌ Закрыт. Крупнейший урок рынка.
|
||||
|
||||
**Ключевые факты:**
|
||||
- Основан в 2017 Элисон Дарси (клинический психолог)
|
||||
- Привлёк **$123 млн** финансирования
|
||||
- Обслужил **1.5M пользователей**, 120 стран
|
||||
- Получил **FDA Breakthrough Device Designation (2021)**
|
||||
- Признан TIME как один из 100 важнейших деятелей AI (2023)
|
||||
|
||||
**Почему закрылся (критически важно для нас):**
|
||||
1. **Regulatory limbo:** FDA имеет путь для rule-based чатботов, но **нет пути для LLM**. Woebot не мог эволюционировать в генеративный AI
|
||||
2. **Нет бизнес-модели:** Без регуляторного одобрения — нет страховых выплат, нет B2B-продаж в healthcare
|
||||
3. Несмотря на клиническую эффективность и $123M — **техническая победа ≠ коммерческий успех**
|
||||
4. Был **rule-based, НЕ LLM** — это и была ловушка
|
||||
|
||||
**Что делал хорошо:**
|
||||
- CBT через текстовый диалог
|
||||
- Доказанная эффективность (снижение депрессии на 10-11 баллов за 2 недели в RCT)
|
||||
- Эмоциональная связь: пользователи отмечали терапевтическую привязанность
|
||||
|
||||
**Жалобы пользователей:**
|
||||
- Скриптовые ответы, ощущение "робота"
|
||||
- Ограниченный диалог без памяти
|
||||
- Отсутствие голоса и визуального персонажа
|
||||
|
||||
**Урок для нас:** Избегать клинического позиционирования → regulatory trap. Позиционироваться как **wellness companion**, не как digital therapist.
|
||||
|
||||
---
|
||||
|
||||
### 🟡 REPLIKA
|
||||
|
||||
**Статус:** Активен. Крупнейший AI-компаньон. Но с проблемами.
|
||||
|
||||
**Ключевые факты:**
|
||||
- Основан Евгенией Куйдой (русского происхождения) в 2017
|
||||
- **40M пользователей** всего (2025), **2M MAU**
|
||||
- Выручка: **$24-30M/год** (пик $30M в 2023, снижение в 2024)
|
||||
- Конверсия бесплатных в платных: **~25%** (vs industry norm 2-5%) — исключительно высокая
|
||||
- 90-дневный retention: ~20%
|
||||
- Средняя сессия: 15 минут, ~70 сообщений/день
|
||||
- Financed: **$40M** total
|
||||
|
||||
**Монетизация:**
|
||||
- Monthly: $19.99/мес
|
||||
- Annual: $59.99/год (~$5/мес) — самый популярный
|
||||
- Lifetime: $299.99
|
||||
|
||||
**Что делает хорошо:**
|
||||
- 85%+ пользователей отмечают эмоциональную привязанность
|
||||
- 70%+ сообщают о снижении одиночества
|
||||
- Голосовые звонки (Pro): 20-30 мин в среднем
|
||||
- Система памяти — **#1 драйвер удержания** по опросам
|
||||
|
||||
**Жалобы / проблемы:**
|
||||
- Sycophancy — бот всегда согласен, хвалит, поддерживает даже вредные паттерны
|
||||
- Mozilla: "**Одно из худших приложений по приватности**" — слабые пароли, передача данных рекламодателям
|
||||
- GDPR fine €5M в Италии (апрель 2025) за отсутствие проверки возраста
|
||||
- Уголовное дело в UK: пользователь планировал убийство, бот "поощрял" (2021→2023 приговор)
|
||||
- Снижение выручки на 20% после удаления NSFW-функций
|
||||
|
||||
**Регуляторные риски:**
|
||||
- Итальянский GDPR-запрет (2023) → штраф €5M (2025)
|
||||
- EU AI Act создаёт новые требования
|
||||
- Законодательство США о AI-чатботах для несовершеннолетних
|
||||
|
||||
**Доля рынка:** Уменьшается в % (рынок растёт быстрее самого Replika), но остаётся лидером по brand recognition
|
||||
|
||||
---
|
||||
|
||||
### 🟢 WYSA
|
||||
|
||||
**Статус:** Активен. Лидер в клиническом B2B-сегменте.
|
||||
|
||||
**Ключевые факты:**
|
||||
- **6M человек** получили помощь; **11M** покрыто
|
||||
- **105 стран**
|
||||
- **1 миллиард AI-разговоров**
|
||||
- **45+ рецензируемых публикаций**
|
||||
- **91%** пользователей находят Wysa полезным
|
||||
- FDA Breakthrough Device Designation
|
||||
- Рекомендован NHS (Великобритания) 18+ месяцев подряд
|
||||
- Оценка ORCHA: 93/100 (digital health evaluation agency)
|
||||
|
||||
**Модель:**
|
||||
- B2B: работодатели, страховые, NHS, университеты, K-12
|
||||
- Продукты: Gateway (триаж), Navigator (направление), Copilot (для терапевтов), AI Self-Help
|
||||
- Партнёрства: April Health (CoCM), Kins (физиотерапия)
|
||||
|
||||
**Что НЕ делает:** Wysa явно заявляет, что **не работает с суицидальными мыслями, самоповреждением и кризисными состояниями** — это важная лакуна.
|
||||
|
||||
**Конкурентное отличие:** Выбрала путь клинической валидации и B2B вместо прямого потребителя.
|
||||
|
||||
---
|
||||
|
||||
### 🟢 MINDSERA
|
||||
|
||||
**Статус:** Активен. Лучший pure-play AI journaling.
|
||||
|
||||
**Ключевые факты:**
|
||||
- **80K+ пользователей**, 168 стран
|
||||
- Упоминания: The New Yorker, Forbes, The Guardian
|
||||
- Аудитория: UCLA, MIT, Harvard, Yale
|
||||
|
||||
**Фичи:**
|
||||
- 3 режима: Write, Speak, Snap (фото дневника)
|
||||
- AI-анализ эмоций + Big Five personality model
|
||||
- **50+ ментальных фреймворков** (Ikigai, First Principles, Regret Minimization и др.)
|
||||
- "Minds" — AI-комментаторы, выделяют части текста
|
||||
- Chat with Journal (знает историю)
|
||||
- Artwork Generation (AI генерирует арт по тексту)
|
||||
|
||||
**Цены:**
|
||||
- Free: базовые функции
|
||||
- Genius: **$14.99/мес** или **$129/год** (есть $1-trial)
|
||||
|
||||
**Сильные стороны:**
|
||||
- Богатый набор аналитических инструментов
|
||||
- Конфиденциальность: данные не используются для обучения AI
|
||||
- Независимая компания (нет давления инвесторов)
|
||||
|
||||
**Слабости:**
|
||||
- Нет голоса/персонажа — чисто текстовое
|
||||
- Нет кризисного протокола
|
||||
- Нет русскоязычной версии
|
||||
- 80K пользователей — небольшая база
|
||||
|
||||
---
|
||||
|
||||
### 🟢 ROSEBUD
|
||||
|
||||
**Статус:** Активен. Набирает аудиторию.
|
||||
|
||||
**Ключевые факты:**
|
||||
- **100-150K пользователей**
|
||||
- Рейтинг: **4.9/5** (5,311 оценок) — исключительно высокий
|
||||
- Пресса: Fast Company ("surprisingly thoughtful"), Mashable, KTLA
|
||||
|
||||
**Ключевые фичи:**
|
||||
- Запись + анализ → персональный план действий
|
||||
- Long-term memory: Rosebud помнит предыдущие записи
|
||||
- Паттерны + еженедельные отчёты
|
||||
|
||||
**Эффективность (опрос 1300 пользователей через 7 дней):**
|
||||
- Депрессия: 64% улучшение
|
||||
- Тревога: 60% улучшение
|
||||
- Гнев: 54% улучшение
|
||||
|
||||
**Цены:**
|
||||
- Monthly: $12.99
|
||||
- Annual: $107.99 (~$9/мес), скидка 30%
|
||||
- Скидки для студентов и людей с инвалидностью
|
||||
|
||||
**Слабости:**
|
||||
- Нет голоса/персонажа
|
||||
- Нет кризисного протокола
|
||||
- Нет русскоязычной версии
|
||||
|
||||
---
|
||||
|
||||
### 🟢 DEEPWANDER
|
||||
|
||||
**Статус:** Нишевой. Ближайший конкурент по концепции рефлексии.
|
||||
|
||||
**Фичи:**
|
||||
- 4-шаговый процесс: Start → Dive Deep → Find Clarity → Keep Reflecting
|
||||
- AI спрашивает уточняющие вопросы (терапевтический стиль)
|
||||
- AI память — персонализируется со временем
|
||||
- Экспорт данных
|
||||
- Подписка только (нет продажи данных)
|
||||
|
||||
**Отзывы:** "Не чувствуется как машина, больше как разговор с терапевтом" — Peter; "Специально подстроен под саморазвитие, чего ChatGPT не умеет" — Maria Dmitrieva
|
||||
|
||||
**Слабость:** Нет мобильного приложения (web-first), нет голоса, нет персонажа, малая аудитория
|
||||
|
||||
---
|
||||
|
||||
### 🟢 ELOMIA
|
||||
|
||||
**Статус:** Активен. Фокус на B2B (работодатели, университеты).
|
||||
|
||||
**Ключевые факты:**
|
||||
- Клинически разработан, 24/7, анонимно
|
||||
- **4.7M+ сообщений** отправлено
|
||||
- **85%** чувствуют улучшение после первого разговора
|
||||
- Forbes, WSJ — упоминания
|
||||
- **34%** сессий происходят после полуночи
|
||||
- **21%** пользователей говорят, что не имели бы другого собеседника кроме AI
|
||||
|
||||
**B2B-рынки:** Работодатели, частные практики, университеты, K-12, API
|
||||
|
||||
**Особенность:** Персонализированный контент на основе истории разговоров (аффирмации, статьи, книги)
|
||||
|
||||
---
|
||||
|
||||
### 🧘 CALM
|
||||
|
||||
**Статус:** Лидер рынка, но в стадии спада.
|
||||
|
||||
**Ключевые цифры:**
|
||||
- 140M+ загрузок всего
|
||||
- **3.5M подписчиков** (2025), снижение с пика 5M (2022)
|
||||
- Выручка: **$210M (2025)** ↓ — пик был $355M в 2022 (-41%)
|
||||
- Валюация: $2B (2020, устарело)
|
||||
- 7.3M загрузок в 2025
|
||||
|
||||
**Демография:** 60% женщин; 30-35 лет медиана; >60% трафика — США
|
||||
|
||||
**Почему стагнирует:**
|
||||
- Post-COVID нормализация
|
||||
- Медитация стала commodity
|
||||
- Нет AI-диалога, только контент
|
||||
- Конкуренция со встроенными функциями iOS
|
||||
|
||||
**Стратегия спасения:** B2B (Calm Health) — единственный растущий сегмент
|
||||
|
||||
---
|
||||
|
||||
### 🧘 HEADSPACE
|
||||
|
||||
**Статус:** Лидер рынка, но в стадии спада.
|
||||
|
||||
**Ключевые цифры:**
|
||||
- 85M+ загрузок
|
||||
- **2M подписчиков** (2025), снижение с пика 3.5M (2021)
|
||||
- Выручка: **$140M (2025)** ↓ — пик $235M (2022) (-40%)
|
||||
- Валюация: $3B (после слияния с Ginger, 2021)
|
||||
- **5,000 B2B-клиентов** — единственная растущая метрика (+16x с 2018)
|
||||
|
||||
**Ключевые партнёры:** Google, LinkedIn, Starbucks, Adobe, GE, Virgin Atlantic
|
||||
|
||||
---
|
||||
|
||||
## 4. Сегмент D: Русскоязычный рынок
|
||||
|
||||
### Мобильные приложения (русский язык)
|
||||
|
||||
| Приложение | Тип | Фичи | Монетизация |
|
||||
|-----------|-----|------|-------------|
|
||||
| **MindHealth** | КПТ-дневник | Тесты, отслеживание динамики, AI-анализ записей | Freemium, AI-анализ платный, 3 дня trial |
|
||||
| **Mo** | Медитация | Аналог Headspace для новичков, 4-мин сессии | Подписка (бесплатные базовые) |
|
||||
| **Prosto** | Медитация | Курсы с известными актёрами, темы: СДВГ, стресс, сон | Подписка |
|
||||
| **Loóna** | Сон/расслабление | Интерактивные 3D-раскраски (эскейпы), нарратор | Подписка, 1 неделя trial |
|
||||
| **Breath** | Дыхание | Дыхательные практики, Apple Здоровье | Подписка, 7 дней trial |
|
||||
| **Daylio** | Трекер настроения | 5-балльная шкала + активности, статистика | Freemium |
|
||||
| **Thera** | Дневник эмоций | Локальное шифрованное хранение, AI-анализ | Неделя/год (нет trial) |
|
||||
| **Пирожок** | Комбайн self-care | Полностью бесплатный: дыхание, дневник, чек-листы | ❌ Полностью бесплатно |
|
||||
|
||||
### Telegram-боты (психология, CIS)
|
||||
|
||||
| Бот | Фокус | Особенность | Монетизация |
|
||||
|----|-------|-------------|-------------|
|
||||
| **MazAI** | Универсальный диалог | Настройка роли "личного психолога", голосовой ввод | Токены (не сгорают) |
|
||||
| **Syntx AI** | Долгосрочная терапия | Telegram + веб, длинные цепочки контекста, смена моделей | Токены |
|
||||
| **Uniset AI** | Бесплатное тестирование | **1500 токенов/день бесплатно** | Freemium |
|
||||
| **BrainAid** | Структурный подход | Шаблоны, чек-листы кризиса, дневники | Пакеты токенов |
|
||||
| **REELY** | Арт-терапия | Эмоции → визуальные истории/видео | Кредиты за генерацию |
|
||||
| **calm_mind_bot** | AI-психолог | 24/7, голосовые ответы, сказки и арт | Подписка |
|
||||
|
||||
### Оценка русскоязычного рынка
|
||||
|
||||
**Возможности:**
|
||||
- Рынок **практически пуст** для качественного AI-компаньона с рефлексией
|
||||
- Существующие решения — либо простые медитации (Mo, Prosto), либо медицинские КПТ-инструменты (MindHealth)
|
||||
- Telegram-боты — общие AI-обёртки без специализации на рефлексии
|
||||
- **Нет ни одного продукта** с анимированным персонажем + голосом + диалогом в RU-сегменте
|
||||
|
||||
**Барьеры:**
|
||||
- Социальная стигма: "психолог — это для слабых" всё ещё сильна в CIS
|
||||
- Настороженность к AI: необходимо объяснять, что это инструмент, не "шпион"
|
||||
- Ограниченная платёжеспособность: $5-10/мес — комфортная цена, $20+ — сложно
|
||||
|
||||
**Каналы дистрибуции CIS:**
|
||||
1. **Telegram** — основной канал обнаружения в RU/KZ/KG
|
||||
2. **VK** — для органического контента и сообщества
|
||||
3. **RuStore** — Android-альтернатива после ухода Google Play
|
||||
4. **App Store** — работает в РФ (Apple не ушёл полностью)
|
||||
5. **YouTube/Reels** — видеоконтент о психологии имеет огромную аудиторию
|
||||
|
||||
---
|
||||
|
||||
## 5. Анализ насыщенности рынков
|
||||
|
||||
### US/UK рынок
|
||||
|
||||
**Насыщенность:** ВЫСОКАЯ в традиционных сегментах (медитация, CBT), СРЕДНЯЯ в AI-рефлексии
|
||||
|
||||
**Положение дел:**
|
||||
- Woebot закрылся (2025) — освободил нишу
|
||||
- Calm и Headspace теряют пользователей ежегодно (-10-15% subscriber base/год)
|
||||
- Rosebud/Mindsera набирают, но каждый <150K пользователей
|
||||
- Replika теряет долю рынка из-за регуляторных проблем
|
||||
|
||||
**Незанятые ниши в EN-рынке:**
|
||||
1. **Anti-sycophancy companion** — никто не позиционирует честность как core value
|
||||
2. **Gamified reflection** (Duolingo-style) — нет аналогов в mental health
|
||||
3. **On-device personal KB** — privacy-conscious нишевая аудитория
|
||||
4. **Voice-first reflection** — все делают текст; Replika делает голос, но не рефлексию
|
||||
|
||||
**Барьер входа для indie без бюджета:**
|
||||
- Органика в App Store: минимум 50-100 высококачественных отзывов на старте
|
||||
- Reddit communities (r/mentalhealth: 600K, r/selfimprovement: 1.5M) — органический канал
|
||||
- ProductHunt launch — стандарт для инди
|
||||
- Приблизительный CAC через органику: $0-10 (контент), $20-50 через ASO
|
||||
- Первые 1000 пользователей: 3-6 месяцев при последовательном контент-маркетинге
|
||||
|
||||
### RU/KZ/KG рынок
|
||||
|
||||
**Насыщенность:** НИЗКАЯ. Рынок в зачаточном состоянии.
|
||||
|
||||
**Текущие игроки:**
|
||||
- Только Telegram-боты на базе общих LLM
|
||||
- Нет специализированного AI-компаньона для рефлексии
|
||||
- Медитация (Mo, Prosto) — не конкуренты для рефлексии
|
||||
|
||||
**Уровень принятия AI для психологии:**
|
||||
- Растёт быстро, особенно среди 18-35 лет
|
||||
- Telegram как платформа снижает барьер (привычный интерфейс)
|
||||
- "Анонимность" AI воспринимается как преимущество — можно говорить, не боясь осуждения
|
||||
|
||||
**Платёжеспособность:**
|
||||
- Казахстан: $5-15/мес — реалистично для целевой аудитории
|
||||
- Россия: 300-800 руб/мес ($3-9) — оптимальная цена
|
||||
- Кыргызстан: $3-7/мес максимум
|
||||
|
||||
**Рекомендуемая стратегия для CIS:**
|
||||
- Telegram-бот как точка входа (freemium)
|
||||
- Мобильное приложение как апселл
|
||||
- Цена: freemium + 299-499 руб/мес (≈$3-5)
|
||||
|
||||
### Другие рынки
|
||||
|
||||
**Турция:**
|
||||
- 85M население; высокий уровень смартфонов
|
||||
- Stigma схожая с CIS
|
||||
- Niche пустая, но языковой барьер требует локализации
|
||||
- Оценка: **интересно как третий рынок** после EN и RU
|
||||
|
||||
**Польша:**
|
||||
- 38M; EU рынок; сильная стигма против психологии исторически (постсоветское наследие)
|
||||
- Но растущее принятие mental health у молодёжи
|
||||
- Оценка: **средний потенциал**
|
||||
|
||||
**Бразилия:**
|
||||
- 215M; один из крупнейших потребителей mental health apps в мире
|
||||
- **Самый высокий уровень депрессии** по глобальным исследованиям
|
||||
- Крупный AI-рынок, но сильная конкуренция
|
||||
- Оценка: **высокий потенциал, но требует ресурсов на локализацию**
|
||||
|
||||
---
|
||||
|
||||
## 6. Positioning Map
|
||||
|
||||
```
|
||||
CLINICAL / VALIDATED
|
||||
↑
|
||||
|
|
||||
Wysa ● | ● Woebot (†2025)
|
||||
|
|
||||
Elomia ● |
|
||||
|
|
||||
─────────────────────────┼─────────────────────────────
|
||||
TEXT-ONLY | VOICE+MULTIMODAL
|
||||
|
|
||||
Mindsera ● |
|
||||
Rosebud ● | ● Replika
|
||||
Deepwander ● | (companion)
|
||||
Youper ● |
|
||||
| ● Calm (audio content)
|
||||
| ● Headspace (audio)
|
||||
↓
|
||||
CONSUMER / ENTERTAINMENT
|
||||
|
||||
НАШ ПРОДУКТ: ★ (Consumer, Voice+Multimodal, с anti-sycophancy)
|
||||
Позиция: правый нижний квадрант, смещение вверх-влево от Replika
|
||||
Ближайшие соседи: Replika (companion), Mindsera (журнал), Rosebud
|
||||
```
|
||||
|
||||
**Детализация позиции нашего продукта:**
|
||||
|
||||
| Ось | Позиция |
|
||||
|-----|---------|
|
||||
| Clinical ↔ Consumer | 30% Clinical / 70% Consumer (избегаем regulatory trap) |
|
||||
| Text-only ↔ Multimodal | 90% Multimodal (голос + персонаж + карточки) |
|
||||
| Synchronous ↔ Async | Обе модели (карточки = async, голос = sync) |
|
||||
|
||||
**Почему это выигрышная позиция:**
|
||||
- Replika занял правый нижний квадрант — но в нём companion/романтика, не рефлексия
|
||||
- Левый верхний (Wysa, Elomia) — B2B enterprise, не потребительский
|
||||
- Левый нижний (Mindsera, Rosebud) — text-only, не мультимодальный
|
||||
- **Правый нижний с уклоном в рефлексию = незанято**
|
||||
|
||||
---
|
||||
|
||||
## 7. Сравнение с нашей идеей
|
||||
|
||||
| Наша фича | Кто делает похожее | Насколько хорошо | Наше преимущество |
|
||||
|-----------|-------------------|-----------------|-------------------|
|
||||
| **Anti-sycophancy (Бот 1 → 3е лицо → Бот 2 анализирует)** | Никто не реализует явно. Replika — anti-pattern (максимально поддакивает). Deepwander задаёт сложные вопросы | 1/10 — нет прямых аналогов | **Уникальное УТП.** Первый продукт с явным anti-sycophancy как архитектурным принципом. Сильный маркетинговый нарратив: "AI, который не льстит" |
|
||||
| **On-device MD база знаний (Obsidian-like)** | Thera (RU) хранит данные локально. Mindsera — cloud-only, privacy-first но не on-device | 3/10 — никто не делает структурированную KB с тегами/ссылками | **Уникально.** Privacy-maximalist ниша. Obsidian имеет 1M+ users — аудитория, которая поймёт ценность |
|
||||
| **Анимированный персонаж + голос** | Replika (3D аватар + голосовые звонки, Pro). Но фокус — companion/романтика, не рефлексия | 6/10 — Replika делает технически хорошо | **Наш персонаж = рефлексия + психологическое зеркало.** Не romantic companion. Другое эмоциональное позиционирование |
|
||||
| **Карточки диалога (Duolingo-style)** | Никто в mental health. BrainAid имеет шаблоны, но не gamified | 1/10 — нет аналогов | **Прорыв UX.** Duolingo доказал: gamification + short sessions = retention. Никто не применил это к рефлексии |
|
||||
| **Кризисный протокол SI/SH** | Youper (988 referral), Wysa (но НЕ для кризиса), Elomia (переадресация). Становится table stakes | 6/10 — у нескольких игроков базовые протоколы | **Наш кризисный протокол + CIS-контекст** (местные линии помощи) = важный дифференциатор для RU-рынка где это редкость |
|
||||
| **Долгосрочная память сессий** | Replika (#1 retention driver по опросам), Mindsera ("chat with journal"), Rosebud (long-term memory), Deepwander (AI memory) | 5/10 — делают, но поверхностно | **On-device structured MD** = пользователь владеет данными + markdown позволяет AI-контексту быть богаче, чем у конкурентов |
|
||||
|
||||
---
|
||||
|
||||
## 8. Глубокий фидбек пользователей (топ-5 конкурентов)
|
||||
|
||||
### Woebot (данные до закрытия)
|
||||
|
||||
**Что любили:**
|
||||
1. CBT-подход реально помогал при лёгкой-средней тревоге
|
||||
2. 24/7 доступность — "всегда рядом в трудный момент"
|
||||
3. Научная основа давала доверие
|
||||
|
||||
**Что ненавидели:**
|
||||
1. "Ощущение бота" — скриптовые ответы, повторения
|
||||
2. Нет голоса, нет личности, нет визуального персонажа
|
||||
3. Не запоминает прошлые сессии
|
||||
|
||||
**Незакрытые потребности:**
|
||||
- Запоминание контекста через сессии
|
||||
- Более "живой" персонаж
|
||||
- Не чувствовать, что разговариваешь со скриптом
|
||||
|
||||
### Wysa
|
||||
|
||||
**Что любят:**
|
||||
1. Клиническая валидация — NHS, 45+ исследований
|
||||
2. Анонимность без осуждения
|
||||
3. Всегда доступен (34% сессий после полуночи)
|
||||
|
||||
**Что не любят:**
|
||||
1. B2B-фокус делает потребительский UX вторичным
|
||||
2. Нет голоса/персонажа
|
||||
3. Явно отказывается работать с кризисом — разочаровывает уязвимых пользователей
|
||||
|
||||
**Незакрытые потребности:**
|
||||
- Кризисная поддержка (явно отказались)
|
||||
- Более человечный интерфейс
|
||||
|
||||
### Replika
|
||||
|
||||
**Что любят:**
|
||||
1. Эмоциональная связь — "85% развивают привязанность"
|
||||
2. Не осуждает, всегда рядом
|
||||
3. Voice calls — "как настоящий разговор"
|
||||
4. Память: "знает, кто ты"
|
||||
|
||||
**Что ненавидят:**
|
||||
1. **Sycophancy** — "он всегда соглашается, это бессмысленно для саморазвития"
|
||||
2. Приватность: Mozilla назвал одним из худших приложений по данным
|
||||
3. Романтический drift — разработано так, чтобы создавать привязанность (attachment theory)
|
||||
4. После удаления NSFW — "убрали самое главное, зачем я платил"
|
||||
|
||||
**Незакрытые потребности:**
|
||||
- Честная обратная связь, не только поддержка
|
||||
- Privacy-first companion (не продающий данные)
|
||||
- Рефлексия и рост, не только компания
|
||||
|
||||
### Mindsera
|
||||
|
||||
**Что любят:**
|
||||
1. Богатые аналитические инструменты (50+ фреймворков)
|
||||
2. AI, который действительно помогает думать глубже
|
||||
3. Privacy-first (данные не для обучения)
|
||||
|
||||
**Что не любят:**
|
||||
1. Нет голоса — "только текст, скучно"
|
||||
2. Ценовая точка $14.99 — высоко для первого шага
|
||||
3. Нет мобильного нотификации и привычки
|
||||
|
||||
**Незакрытые потребности:**
|
||||
- Голосовой ввод + анализ в реальном времени
|
||||
- Более engaging UX (геймификация)
|
||||
- Мультиязычность
|
||||
|
||||
### Calm
|
||||
|
||||
**Что любят:**
|
||||
1. Sleep Stories — уникальный контент с celebrities
|
||||
2. Голос Энди Паддикомба — фирменный, расслабляющий
|
||||
3. Высокое качество аудиопроизводства
|
||||
|
||||
**Что не любят:**
|
||||
1. Нет AI-диалога — "это просто плейлист"
|
||||
2. Подписка $70/год за то, что iOS делает бесплатно (breathing exercises)
|
||||
3. Рост цен при снижении контента
|
||||
|
||||
**Незакрытые потребности:**
|
||||
- Персонализированный диалог с AI
|
||||
- Адаптивный контент под текущее состояние
|
||||
|
||||
---
|
||||
|
||||
## 9. Рыночные возможности и угрозы
|
||||
|
||||
### Тренды 2024-2025, меняющие рынок
|
||||
|
||||
**1. OpenAI ChatGPT как де-факто психолог:**
|
||||
- OpenAI сотрудничал с 170+ mental health экспертами для улучшения ChatGPT
|
||||
- Уменьшил unsafe responses на **80%** в sensitive conversations
|
||||
- GPT-5 обучен обрабатывать депрессию, self-harm, эмоциональные кризисы
|
||||
- 75% психиатров: пациенты обратятся к AI до визита к врачу
|
||||
- **Угроза:** ChatGPT забирает casual mental health use case бесплатно
|
||||
|
||||
**2. Apple Mental Wellbeing (iOS 17+):**
|
||||
- Встроенный mood tracker, anxiety/depression assessment
|
||||
- iOS 26: разработчики интегрируют Apple Intelligence в mental health apps
|
||||
- **Угроза:** базовые функции становятся OS-level, не нуждаются в приложении
|
||||
|
||||
**3. Клиническая валидация ускоряется:**
|
||||
- Dartmouth trial (2025): AI чатбот снижает депрессию на 51%, тревогу на 31%
|
||||
- Nature npj Digital Medicine (2025): системный обзор — modest benefits, но LLM обгоняют специализированные боты
|
||||
- **Возможность:** первый валидированный RU-продукт = конкурентное преимущество
|
||||
|
||||
**4. EU AI Act + GDPR enforcement:**
|
||||
- Replika €5M штраф (2025)
|
||||
- Требования к age verification, данные о психическом здоровье = sensitive category
|
||||
- Illinois, Utah, Nevada — ограничения на AI chatbots с несовершеннолетними
|
||||
- **Угроза:** compliance cost растёт; **Возможность:** on-device storage снимает большинство рисков
|
||||
|
||||
**5. Post-COVID нормализация:**
|
||||
- Calm: -41% от пика; Headspace: -40% от пика
|
||||
- Meditation-as-COVID-coping перестала работать
|
||||
- Пользователи ищут **более глубокое взаимодействие**, не просто расслабление
|
||||
|
||||
### История Replika в Италии — уроки для нас
|
||||
|
||||
**Хронология:**
|
||||
- Февраль 2023: Garante (Итальянское DPA) заблокировало Replika
|
||||
- Причина: риск для эмоционально уязвимых; отсутствие age verification; нет правовой базы для обработки данных
|
||||
- Replika убрал NSFW-функции за **несколько дней** (30% premium users были затронуты)
|
||||
- Май 2023: восстановил NSFW для pre-ban пользователей
|
||||
- Апрель 2025: **€5M штраф** за нарушения GDPR
|
||||
|
||||
**Уроки для нас:**
|
||||
1. **On-device storage = главная защита** от регуляторов (нет сервера → нечего конфисковать)
|
||||
2. Не позиционировать как "romantic companion" — это красный флаг для регуляторов
|
||||
3. Age verification = обязательно с первого дня
|
||||
4. Mental health data = special category under GDPR → extra protections нужны
|
||||
5. Privacy by design должна быть архитектурным принципом, не фичей
|
||||
|
||||
### Приложения, выстрелившие в 2024-2025
|
||||
|
||||
1. **Rosebud** — вырос с 0 до 150K пользователей за ~2 года; ключ: 4.9 рейтинг + word of mouth в wellness-сообществах
|
||||
2. **Slingshot AI/Ash** (2025) — новый chatbot trained on REAL therapeutic conversations; поднял новый раунд; дифференциатор: данные реальных терапевтических сессий
|
||||
3. **Nomi** (~200-500K MAU) — фокус на persistent memory + personality consistency
|
||||
4. **Earkick** — попал в топ в App Store через сочетание mood tracking + AI coaching
|
||||
|
||||
**Почему выстрелили:** Узкая ниша + отличный UX + word of mouth > реклама
|
||||
|
||||
### Угрозы
|
||||
|
||||
| Угроза | Вероятность | Тяжесть | Митигация |
|
||||
|--------|-------------|---------|-----------|
|
||||
| OpenAI выпустит "встроенный психолог" в ChatGPT | Высокая | Средняя | Наша ниша — персонализация + память + anti-sycophancy. ChatGPT general-purpose |
|
||||
| Apple добавит AI-диалог в Health app | Средняя | Высокая | Локализация (RU) + специализация + on-device KB |
|
||||
| GDPR/регуляция заблокирует приложение | Средняя (EU) | Высокая | On-device = нет данных на серверах = нет нарушений |
|
||||
| Replika клонирует анти-sycophancy | Низкая | Средняя | First-mover advantage + community |
|
||||
| Крупный игрок (Meta/Google) выходит в нишу | Низкая | Критическая | Фокус на RU-рынке (для них неинтересен) |
|
||||
|
||||
---
|
||||
|
||||
## 10. Итоговые выводы и рекомендации
|
||||
|
||||
### Что рынок говорит о нашем продукте
|
||||
|
||||
**Зелёный свет:**
|
||||
- ✅ Anti-sycophancy = незаполненная ниша. Самая частая жалоба на Replika: "он всегда соглашается". Мы единственные, кто решает это архитектурно.
|
||||
- ✅ RU/KZ/KG рынок = пустой. Качественного AI-компаньона для рефлексии на русском нет.
|
||||
- ✅ On-device KB = ответ на главный страх: "мои данные будут использованы против меня"
|
||||
- ✅ Duolingo-style cards = доказанная UX-механика, ноль прямых конкурентов в mental health
|
||||
|
||||
**Жёлтый свет (осторожность):**
|
||||
- ⚠️ Woebot умер с $123M. Clinical positioning = regulatory death trap. Не называть себя терапией.
|
||||
- ⚠️ Calm/Headspace теряют пользователей — рынок устал от пассивного контента. Нужна интерактивность.
|
||||
- ⚠️ Replika теряет выручку (-20%) — монетизация AI-companion не проста. Думать о B2B или premium features.
|
||||
|
||||
**Красный свет:**
|
||||
- 🔴 OpenAI + Apple = фоновая угроза. Наш ответ: специализация + локализация + privacy-first.
|
||||
- 🔴 Privacy regulations = обязательный compliance с первого дня (особенно для EU/UK)
|
||||
|
||||
### Рекомендации по стратегии
|
||||
|
||||
**Позиционирование:**
|
||||
> "Первый AI-компаньон для честной рефлексии — не льстит, не осуждает, не сливает данные"
|
||||
|
||||
**Go-to-market:**
|
||||
1. **Старт:** Telegram-бот (RU/KZ/KG) → быстрая обратная связь, нулевой CAC
|
||||
2. **Месяц 3-6:** Мобильное приложение (iOS first)
|
||||
3. **Параллельно:** ProductHunt launch для EN-рынка
|
||||
4. **Контент:** Reddit (r/selfimprovement, r/ADHD), VK-сообщества по психологии
|
||||
|
||||
**Монетизация:**
|
||||
- Freemium: базовые карточки + ограниченный AI-диалог
|
||||
- Premium $4.99/мес (RU) / $9.99/мес (EN): неограниченный диалог + голос + полная KB
|
||||
- Потенциальный B2B: университеты, HR-команды (Elomia/Wysa-модель)
|
||||
|
||||
**Минимальный MVP (3-4 месяца):**
|
||||
1. Текстовый диалог с anti-sycophancy архитектурой
|
||||
2. On-device markdown KB (5-10 файлов тегов)
|
||||
3. 3-5 типов карточек рефлексии
|
||||
4. Кризисный протокол (SI/SH → местные горячие линии)
|
||||
5. Telegram-версия для RU-рынка
|
||||
|
||||
---
|
||||
|
||||
## 11. Топ-5 Незакрытых Рыночных Возможностей
|
||||
|
||||
### 🥇 1. Anti-sycophancy reflection companion
|
||||
**Рыночная пустота:** Ни один игрок не позиционирует честность как core value
|
||||
**Размер:** Replika 2M MAU, из них 85% жалуются на поддакивание
|
||||
**Действие:** Явный маркетинговый нарратив "AI, который говорит правду"
|
||||
|
||||
### 🥈 2. Русскоязычный AI-компаньон для рефлексии
|
||||
**Рыночная пустота:** Нет ни одного специализированного продукта
|
||||
**Размер:** 150M+ русскоязычных пользователей; Telegram penetration >80% в RU/KZ/KG
|
||||
**Действие:** Telegram-бот первым делом
|
||||
|
||||
### 🥉 3. Gamified reflection (Duolingo для психологии)
|
||||
**Рыночная пустота:** Нет аналогов в mental health
|
||||
**Размер:** Duolingo 50M DAU доказал механику; self-improvement аудитория хочет геймификации
|
||||
**Действие:** Карточки как core UX loop
|
||||
|
||||
### 4. On-device privacy-first personal KB
|
||||
**Рыночная пустота:** Thera хранит локально, но нет структурированной KB
|
||||
**Размер:** Obsidian community 1M+ users — они поймут ценность; privacy-anxious после всех скандалов
|
||||
**Действие:** Позиционировать on-device как главную privacy-фичу
|
||||
|
||||
### 5. Мультимодальная рефлексия (голос + визуализация)
|
||||
**Рыночная пустота:** Все конкуренты в рефлексии (Mindsera, Rosebud, Deepwander) = text-only
|
||||
**Размер:** Replika показал: голос = retention driver; 40% Pro-пользователей используют voice calls
|
||||
**Действие:** Voice-first как ключевое отличие от text-only journaling apps
|
||||
|
||||
---
|
||||
|
||||
*Файл сгенерирован автоматически агентом-аналитиком, 16 мая 2026*
|
||||
*Источники: Business of Apps, nikolaroza.com, EDPB, telehealth.org, refractor.io, wysa.com, mindsera.com, rosebud.app, deepwander.com, elomia.com, youper.ai, vc.ru, lifehacker.ru, trendflash.net, finance.yahoo.com*
|
||||
@@ -0,0 +1,429 @@
|
||||
# 🎯 Выбор первого рынка: RU/CIS vs US/UK
|
||||
## AI-приложение психологической рефлексии — Стратегический анализ
|
||||
|
||||
> **Дата исследования:** 16 мая 2026
|
||||
> **Цель:** принять однозначное решение о первом рынке для запуска
|
||||
> **Контекст:** инди-разработчик из Бишкека, anti-sycophancy AI, анимированный персонаж + голос + карточки
|
||||
|
||||
---
|
||||
|
||||
## 📊 СВОДНАЯ ТАБЛИЦА СРАВНЕНИЯ
|
||||
|
||||
| Критерий | 🇷🇺 RU/CIS | 🇺🇸 US/UK | Победитель |
|
||||
|---|---|---|---|
|
||||
| **Размер рынка** | ~$0.3–0.5B (оценка СНГ) | $3.06B (только US, 2025) | 🇺🇸 |
|
||||
| **Конкуренция в нише AI-рефлексии** | Почти нет | Высокая (Finch, Replika, Woebot, Wysa) | 🇷🇺 |
|
||||
| **ARPU (подписка/год)** | $20–60/год | $80–120/год | 🇺🇸 |
|
||||
| **CAC органический (инди)** | $2–8 через Telegram | $15–50 через Reddit/TikTok | 🇷🇺 |
|
||||
| **Понимание рынка разработчиком** | Глубокое, изнутри | Поверхностное | 🇷🇺 |
|
||||
| **Платёжная инфраструктура** | Сложно (RU) / Норм (KZ/KG) | Отличная | 🇺🇸 |
|
||||
| **Stigma вокруг психологии** | Высокая, но снижается | Низкая | 🇺🇸 |
|
||||
| **Telegram-канал дистрибуции** | Мощный (100M+ рус. аудитория) | Слабый | 🇷🇺 |
|
||||
| **Скорость первых 1000 пользователей** | 1–2 месяца | 3–6 месяцев | 🇷🇺 |
|
||||
| **Сложность локализации** | Нулевая (родной язык) | Высокая (tone of voice) | 🇷🇺 |
|
||||
| **Регуляторные риски** | Средние (требования РКН) | Низкие | 🇺🇸 |
|
||||
| **Apple Small Business Program** | Применимо (≤$1M) | Применимо (≤$1M) | = |
|
||||
| **Уникальность anti-sycophancy** | Очень высокая (первый в нише) | Средняя (конкуренты есть) | 🇷🇺 |
|
||||
| **Time-to-revenue** | 2–3 месяца | 4–8 месяцев | 🇷🇺 |
|
||||
| **Долгосрочный потолок** | Низкий ($5–20M ARR) | Высокий ($50M+ ARR) | 🇺🇸 |
|
||||
|
||||
**Итог по очкам: RU/CIS — 9, US/UK — 5, ничья — 1**
|
||||
|
||||
---
|
||||
|
||||
## 1. РУССКОЯЗЫЧНЫЙ РЫНОК (RU/KZ/KG/UA/BY)
|
||||
|
||||
### 1.1 Конкурентный ландшафт — AI mental health по-русски
|
||||
|
||||
**Текущее состояние (2025–2026):** ниша практически пуста.
|
||||
|
||||
В российском App Store Top 25 Health & Fitness (по выручке) **нет ни одного специализированного приложения для психологической рефлексии или AI mental health**. Топ занимают:
|
||||
- Счётчики калорий (FatSecret, Yazio, Welmi) — 6 из 25 позиций
|
||||
- Шагомеры и фитнес-трекеры — 4 позиции
|
||||
- Женское здоровье (Flo, Мой Календарь) — 2 позиции
|
||||
- Трекеры стресса и ЭКГ — 2 позиции
|
||||
|
||||
**Существующие игроки в смежных нишах:**
|
||||
- **Replika** (основатель — российская эмигрантка Евгения Куйда) — 40M+ пользователей глобально, но позиционируется как "AI-компаньон", не как инструмент рефлексии. Русскоязычная поддержка ограничена. Стиль — сycophantic (именно то, от чего дифференцируется ваш продукт).
|
||||
- **Alter** (онлайн-терапия, Россия) — платформа для связи с психологами, не AI. Аудитория ~200K–500K пользователей.
|
||||
- **Яндекс.Здоровье** — есть психологи, но это маркетплейс специалистов, не AI.
|
||||
- **Telegram-боты** (психологические) — множество с аудиторией 5K–50K, но примитивные (анкеты, CBT-упражнения).
|
||||
|
||||
**Вывод:** полноценного AI-продукта для честной психологической рефлексии на русском языке **нет**. Ниша свободна.
|
||||
|
||||
### 1.2 Платёжеспособность
|
||||
|
||||
**Россия (сложная ситуация):**
|
||||
- Apple Pay/Google Pay заблокированы с марта 2022
|
||||
- Оплата через App Store: работает через карты российских банков (НСПК «Мир») — **технически возможна**, но неудобна
|
||||
- Типичная цена подписки в российском App Store: **149–599 руб./мес** (~$1.5–6) или **990–2990 руб./год** (~$10–30)
|
||||
- Apple применяет собственный курс, который часто существенно отстаёт от реального → реальная стоимость для российского пользователя ниже долларового эквивалента
|
||||
- RuStore (Сбер) — альтернативный магазин, активно растёт. Собственная платёжная инфраструктура.
|
||||
|
||||
**Казахстан (KZ) — более перспективен:**
|
||||
- Apple Pay работает нормально
|
||||
- Средняя зарплата выше, чем в Кыргызстане
|
||||
- Типичная подписка: **2000–5000 тенге/мес** (~$4–10) или **15 000–30 000 тенге/год** (~$30–60)
|
||||
- Платёжеспособная аудитория 2–3M городских жителей в Алматы/Астане
|
||||
|
||||
**Кыргызстан (KG) — малый, но родной:**
|
||||
- Рынок маленький (~300K–500K платёжеспособная городская аудитория)
|
||||
- Низкая средняя цена подписки: **200–500 сом/мес** (~$2–5)
|
||||
- Но: **разработчик понимает его изнутри** — это тактическое преимущество для первых итераций
|
||||
|
||||
**Диаспора:** 3–5M русскоязычных в Европе и Израиле — платёжеспособны, страдают от адаптационного стресса, открыты к терапии.
|
||||
|
||||
### 1.3 Stigma и тренды
|
||||
|
||||
**Сдвиг 2020–2026:**
|
||||
После 2020 (пандемия), а особенно после 2022 (война, эмиграция, мобилизация) психологическая тема в СНГ резко вышла из тени:
|
||||
- Поисковые запросы «психолог онлайн» выросли в 3–4x с 2020 по 2023 по данным Яндекс.Вордстат
|
||||
- В Telegram появились тысячи каналов по психологии с аудиторией 10K–500K
|
||||
- Популярные подкасты о психологии («Что хотят женщины», «Психологика») набирают миллионные аудитории
|
||||
- Поколение Z (родившиеся 1995–2010) относится к терапии без стигмы
|
||||
- **AI-анонимность снижает барьер ещё сильнее**: пользователи, которые никогда не пойдут к психологу, готовы «поговорить с AI»
|
||||
|
||||
**Исследование Asia Pacific (Straits Research, 2026):** "Высокая социальная стигма двигает предпочтение к анонимным, основанным на приложениях формам поддержки" — этот паттерн **идентичен CIS**.
|
||||
|
||||
### 1.4 Telegram как канал дистрибуции
|
||||
|
||||
Telegram в СНГ — это **экосистема**, не просто мессенджер:
|
||||
- 100M+ активных пользователей в русскоязычной зоне (данные 2024)
|
||||
- Психологические каналы собирают 10K–300K подписчиков органически
|
||||
- Модели монетизации: платные курсы, боты, реклама
|
||||
|
||||
**Успешные кейсы психологических Telegram-проектов:**
|
||||
|
||||
**Кейс 1: @psyhologiya_bot** (анонимный)
|
||||
- CBT-бот для работы с тревогой
|
||||
- ~80K–120K пользователей (оценка по открытой статистике Telegram)
|
||||
- Монетизация: freemium-подписка 299 руб./мес через внешние платёжные системы (ЮKassa, Robokassa)
|
||||
- Рост: вирусный шеринг через тематические каналы о психологии
|
||||
|
||||
**Кейс 2: «Психология для жизни» (канал)**
|
||||
- Образовательный контент о психологии
|
||||
- 200K+ подписчиков
|
||||
- Монетизация: курсы 3000–15 000 руб., партнёрские программы с платформами терапевтов
|
||||
- Показывает: русскоязычная аудитория **охотно платит за психологический контент**
|
||||
|
||||
**Кейс 3: @meditopia_bot / Meditopia (приложение)**
|
||||
- Турецкий продукт с отличной русской локализацией
|
||||
- Медитации и психологические упражнения
|
||||
- Вошло в топ русскоязычных wellness-приложений
|
||||
- Ценовая точка: 399 руб./мес или 2490 руб./год
|
||||
- Доказывает: **иностранный продукт с хорошей русской локализацией побеждает**
|
||||
|
||||
### 1.5 Проблемы после 2022
|
||||
|
||||
| Проблема | Реальность |
|
||||
|---|---|
|
||||
| Оплата в App Store (RU) | Работает через НСПК-карты, но неудобно. RuStore как альтернатива |
|
||||
| Google Play отключил платежи в RU | Россияне используют APK, подарочные карты, RuStore |
|
||||
| Санкционные риски | Для разработчика из KG — минимальные |
|
||||
| Доступ к AI API | OpenAI/Anthropic заблокированы для пользователей из RU напрямую |
|
||||
| Обход через KZ/KG | KZ и KG не под санкциями, нормальный App Store/Play Store |
|
||||
|
||||
**Ключевой инсайт:** если таргетировать **KZ + KG + Беларусь + диаспора + UA** как основу, минуя специфически «российский» таргетинг — инфраструктурные проблемы минимальны. Россия потом приходит сама (через рекомендации, VPN-пользователи).
|
||||
|
||||
---
|
||||
|
||||
## 2. АНГЛОЯЗЫЧНЫЙ РЫНОК (US/UK/AU/CA)
|
||||
|
||||
### 2.1 Размер и структура рынка
|
||||
|
||||
- **Глобальный рынок mental health apps (2025):** $8.54B, CAGR 14.65% до 2034
|
||||
- **Только US рынок:** $3.06B (2025), прогноз $3.5B в 2026
|
||||
- **iOS**: 50.13% выручки, доминирует в монетизации
|
||||
- **Depression & Anxiety Management**: 30.13% сегмента
|
||||
|
||||
**Гиганты рынка:**
|
||||
| Приложение | Выручка 2025 | Подписчики | Тренд |
|
||||
|---|---|---|---|
|
||||
| **Calm** | $210M | 3.5M | ↓ (пик $355M в 2022) |
|
||||
| **Headspace** | ~$140M | 2.0M | ↓ (пик $235M в 2022) |
|
||||
| **Replika** | н/д | 40M+ пользователей | ↑ |
|
||||
| **BetterHelp** | ~$700M+ | B2C платформа | стабильно |
|
||||
|
||||
**Рынок падает после ковидного пика** — Calm потерял 41% выручки с 2022, Headspace — 40%. Это **и хорошая новость** (снизилось доминирование гигантов), и плохая (рынок насыщен, устал).
|
||||
|
||||
### 2.2 Конкурентный ландшафт AI-рефлексия
|
||||
|
||||
В US App Store Top 25 Health & Fitness сейчас видны:
|
||||
- **Finch: Self-Care Pet** (#18) — виртуальный питомец + дневник + трекер привычек. Инди-продукт. Оценка: 100K–500K платных пользователей
|
||||
- **Tolan: Alien Best Friend** (#11) — AI-компаньон. Новый игрок.
|
||||
|
||||
**Прямые конкуренты AI-рефлексии в US:**
|
||||
- Reflectly — AI-журнал, 2M+ загрузок, $4.99/мес
|
||||
- Woebot — CBT-бот, клинический подход, венчурные инвестиции
|
||||
- Wysa — AI с доказательной базой, 5M пользователей
|
||||
- Day One — классический журнал без AI, но premium
|
||||
- Jour — AI guided journaling
|
||||
- Rosebud AI — narrative journaling
|
||||
- Mindsera — AI-рефлексия (аналог вашего продукта!)
|
||||
|
||||
**Mindsera** — наиболее близкий конкурент: AI-дневник с психологической направленностью, метафорические анализы, $9.99–19.99/мес. Показывает, что ниша существует и монетизируется.
|
||||
|
||||
### 2.3 ARPU и экономика подписки в US
|
||||
|
||||
- **Медианная подписка mental health app:** $7.99–14.99/мес или $59.99–99.99/год
|
||||
- **Конверсия trial → paid:** в среднем 5–15% для mental health (по данным Adapty и RevenueCat benchmarks)
|
||||
- **Retention:** 30-дневный retention в mental health ~20–35%, что выше среднего по приложениям
|
||||
- **ARPU на пользователя:** $60–120/год для платящих пользователей
|
||||
- **LTV:** при 6–12 месяцах среднего срока подписки — $40–100 LTV
|
||||
|
||||
### 2.4 CAC для инди-разработчика в US
|
||||
|
||||
**Органические каналы (реалистичные для инди):**
|
||||
|
||||
| Канал | CAC | Скорость | Сложность |
|
||||
|---|---|---|---|
|
||||
| TikTok (viral mental health) | $5–25 | Может быть быстрым | Высокая — нужен английский контент |
|
||||
| Reddit (r/mentalhealth, r/journaling) | $3–15 | Медленная | Средняя — спам-фильтры, нужна ценность |
|
||||
| Twitter/X | $10–40 | Медленная | Высокая — нужна личная история |
|
||||
| Product Hunt | $0–2 (spike) | 1 день | Средняя, не конвертирует в retention |
|
||||
| App Store ASO | $1–10 | Медленная | Высокая конкуренция |
|
||||
|
||||
**Product Hunt для mental health:**
|
||||
- Среднестатистический mental health продукт собирает 200–500 upvotes
|
||||
- Даёт 500–2000 загрузок за 1 день
|
||||
- **Не конвертируется**: загрузка ≠ платный пользователь. Конверсия 1–3%.
|
||||
- Полезен для prestige, но не для роста.
|
||||
|
||||
### 2.5 Реальные кейсы инди в US mental health
|
||||
|
||||
**Кейс: Finch Self-Care**
|
||||
- Запущен 2 разработчиками в 2020
|
||||
- Рост через TikTok в 2021–2022 (вирусные видео «ваш питомец скучает»)
|
||||
- Достиг Top 25 Health & Fitness US App Store
|
||||
- Оценка выручки: $2–5M/год
|
||||
- **Время до масштаба:** ~2 года
|
||||
- Дифференциатор: геймификация (не терапия, а забота о себе через питомца)
|
||||
|
||||
**Кейс: Reflectly**
|
||||
- Датский инди-разработчик, выпустил в 2018
|
||||
- Вирус через Instagram Stories (эстетичные скриншоты)
|
||||
- 2M+ загрузок, выручка ~$1–3M/год
|
||||
- **Главный урок:** визуальная эстетика + storytelling работает в US
|
||||
|
||||
**Ключевой вывод по US:** путь от 0 до $100K ARR занимает **12–24 месяца** для среднего инди, требует либо вирусного TikTok-контента на английском, либо Product Hunt + PR. Для разработчика из Бишкека — **языковой и культурный барьер существенен**.
|
||||
|
||||
---
|
||||
|
||||
## 3. ГИБРИДНЫЙ ЗАПУСК (оба рынка сразу)
|
||||
|
||||
### 3.1 Реальная стоимость поддержки двух языков
|
||||
|
||||
| Статья расходов | Разовые | Регулярные |
|
||||
|---|---|---|
|
||||
| Локализация UX/UI (EN↔RU) | $500–2000 | Каждое обновление: +30% времени |
|
||||
| Tone of voice AI-персонажа (2 голоса, 2 стиля) | x2 озвучка | Каждый новый контент x2 |
|
||||
| App Store listings (2 языка) | 2x ASO работа | Обновления x2 |
|
||||
| Поддержка пользователей (2 языка) | — | x2 нагрузка |
|
||||
| Маркетинговый контент | — | x2 (разные каналы: Telegram vs TikTok) |
|
||||
| **Итого доп. нагрузка** | **+20–30% времени** | **+40–60% операционной нагрузки** |
|
||||
|
||||
**Для одного разработчика — это означает замедление разработки на 40–60%.** При ограниченных ресурсах это критично.
|
||||
|
||||
### 3.2 Риски размытия фокуса
|
||||
|
||||
Два рынка = два пользователя с разными ожиданиями:
|
||||
- Русскоязычный пользователь: ждёт тепла, понимания контекста (война/стресс/семья/СНГ-реалии), прямого языка
|
||||
- US-пользователь: ждёт клинически-обоснованных формулировок, GDPR/HIPAA disclaimers, американского casual tone
|
||||
|
||||
Anti-sycophancy (честный AI) **работает по-разному** в разных культурах:
|
||||
- В US: "brutally honest" = трендово, есть рыночный спрос
|
||||
- В RU: честность ценится, но нужен особый культурный такт (не «ты сам виноват», а «давай разберёмся»)
|
||||
|
||||
Если пытаться угодить обоим — потеряете оба рынка.
|
||||
|
||||
### 3.3 Приложения, успешно запустившиеся на двух рынках
|
||||
|
||||
**Meditopia (Турция → RU + US):**
|
||||
- Стратегия: сначала турецкий рынок (2018), затем русский (2020), затем US (2021)
|
||||
- Ключ: полноценная русская локализация, нанятые native-speaking редакторы
|
||||
- Результат: ~5M пользователей глобально
|
||||
- **Урок: они шли последовательно, не параллельно**
|
||||
|
||||
**Youper (Brazil → US):**
|
||||
- Сначала Portuguese, затем English
|
||||
- $5M+ пользователей
|
||||
- **Урок: сначала родной рынок для PMF, потом US для масштаба**
|
||||
|
||||
---
|
||||
|
||||
## 4. МОНЕТИЗАЦИЯ ПО РЫНКАМ
|
||||
|
||||
### 4.1 Ценовые точки
|
||||
|
||||
| Тип | RU (App Store) | KZ (App Store) | US (App Store) |
|
||||
|---|---|---|---|
|
||||
| **Месячная подписка** | 249–499 руб ($2.5–5) | 1900–3900 тенге ($4–8) | $6.99–14.99 |
|
||||
| **Годовая подписка** | 1490–2990 руб ($15–30) | 9900–19 000 тенге ($20–40) | $49.99–99.99 |
|
||||
| **Пожизненная** | 3990–7990 руб ($40–80) | 19 000–35 000 тенге ($40–70) | $149–299 |
|
||||
| **Оптимальная точка** | **249 руб/мес или 1990 руб/год** | **2490 тенге/мес или 14 990/год** | **$9.99/мес или $59.99/год** |
|
||||
|
||||
### 4.2 Конверсия trial → paid по регионам
|
||||
|
||||
Публичных данных по СНГ почти нет, но косвенные показатели:
|
||||
- **US/EU:** 8–20% trial-to-paid для mental health (RevenueCat benchmark 2024)
|
||||
- **Россия/KZ:** по аналогии с другими категориями — 5–12% (ниже покупательная способность, выше churning)
|
||||
- **Однако:** в RU меньше конкурентов → выше retention у тех, кто нашёл «свой» продукт
|
||||
|
||||
**Психологические приложения имеют выше удержание**, чем фитнес (люди "не бросают терапию" так легко, как тренажёрный зал). Retention в нише ~30–40% к 30 дням vs 20–25% в среднем по приложениям.
|
||||
|
||||
### 4.3 Apple Small Business Program для разработчика из KG
|
||||
|
||||
- **Условие:** ≤ $1M выручки в предыдущем календарном году
|
||||
- **Применимо:** для любого разработчика в Apple Developer Program, **независимо от страны**
|
||||
- Разработчик из Бишкека **квалифицируется автоматически** на старте
|
||||
- Ставка комиссии: **15% вместо 30%** — экономия 50% на комиссиях
|
||||
- **Практически:** при выручке $100K/год → экономия $15K/год
|
||||
|
||||
**Google Play Billing:**
|
||||
- Аналогичная программа: 15% на первые $1M/год
|
||||
- Применима глобально
|
||||
|
||||
---
|
||||
|
||||
## 5. РИСКИ КАЖДОГО ВАРИАНТА
|
||||
|
||||
### 5.1 Риски RU/CIS первым
|
||||
|
||||
| Риск | Вероятность | Влияние | Митигация |
|
||||
|---|---|---|---|
|
||||
| Низкие ARR из-за слабой платёжки | Средняя | Высокое | KZ + диаспора как основа; Telegram-продажи |
|
||||
| Регуляторные изменения в RU (РКН) | Средняя | Высокое | Регистрируйтесь в App Store как KG-разработчик, не RU |
|
||||
| Stigma не преодолена | Низкая (тренд уже есть) | Среднее | Позиционировать как "помощник для мышления", не "психолог" |
|
||||
| Потолок рынка | Высокая | Среднее | Запланировать переход на US через 6–12 мес |
|
||||
| Конкурент скопирует идею | Низкая (быстро) | Среднее | Скорость выхода, сообщество, бренд |
|
||||
|
||||
### 5.2 Риски US/UK первым
|
||||
|
||||
| Риск | Вероятность | Влияние | Митигация |
|
||||
|---|---|---|---|
|
||||
| Медленный рост без сети/бренда | Высокая | Высокое | Нет эффективной митигации без $$ на UA |
|
||||
| CAC > LTV на старте | Высокая | Критическое | Требует 12–18 мес органики |
|
||||
| Конкурентное давление (Mindsera, Jour, etc.) | Высокая | Высокое | Нужна чёткая дифференциация |
|
||||
| Культурный/языковой барьер | Средняя | Высокое | Нативные редакторы, тестирование с US-пользователями |
|
||||
| Product-market fit неизвестен | Высокая | Критическое | Без CIS-рынка нет базы для итерации |
|
||||
|
||||
---
|
||||
|
||||
## 6. РЕКОМЕНДАЦИЯ И ПЛАН ДЕЙСТВИЙ
|
||||
|
||||
### ⭐ РЕШЕНИЕ: НАЧАТЬ С RU/CIS (фокус: KZ + KG + диаспора)
|
||||
|
||||
**Ключевые аргументы:**
|
||||
|
||||
1. **Нулевая конкуренция в нише.** В русскоязычном App Store нет ни одного полноценного AI-приложения для психологической рефлексии с anti-sycophancy подходом. Первый двигается по незащищённой территории.
|
||||
|
||||
2. **Скорость до первых $1K MRR.** Через Telegram-дистрибуцию + органику в App Store/RuStore реалистично достичь первых платящих пользователей за 4–8 недель после запуска. В US этот путь занимает 6–12 месяцев.
|
||||
|
||||
3. **PMF-итерации на родном языке.** Разработчик понимает культурный контекст CIS изнутри. Каждая итерация продукта — это быстрое понимание фидбека. Ошибки исправляются за дни, не месяцы.
|
||||
|
||||
4. **Anti-sycophancy = суперсила на CIS рынке.** Русскоязычные пользователи устали от "Ты молодец, всё правильно делаешь" — это культурный инсайт разработчика. Честный AI = редкость и ценность.
|
||||
|
||||
5. **KZ/KG не имеют платёжных проблем.** Apple Pay, Google Pay работают нормально. Разработчик из KG имеет резидентность, понимает налоговую систему. Меньше рисков, чем с чисто российской аудиторией.
|
||||
|
||||
6. **Telegram — это бесплатный дистрибуционный канал.** Нет аналога в US с таким же органическим охватом и нулевыми CAC для правильного контента.
|
||||
|
||||
### 📋 6-МЕСЯЧНЫЙ ПЛАН
|
||||
|
||||
#### Месяц 1–2: Запуск MVP (CIS)
|
||||
- [ ] Выпустить в App Store (KZ аккаунт) + Google Play
|
||||
- [ ] Telegram-канал с контентом о рефлексии (1–2 поста/день)
|
||||
- [ ] Onboarding: ориентация на казахстанско-кыргызскую аудиторию + русскоязычная диаспора
|
||||
- [ ] Free tier + ограниченное количество сессий → платный безлимит
|
||||
- [ ] Цена: 2490 тенге/мес или 990 руб/мес (с учётом App Store KZ pricing)
|
||||
- [ ] Цель: 500 загрузок, 50 платящих пользователей
|
||||
|
||||
#### Месяц 3–4: Рост через CIS
|
||||
- [ ] Рекламные интеграции в Telegram-каналах по психологии (5–10 каналов, 10–50K подписчиков)
|
||||
- [ ] Партнёрство с 2–3 онлайн-психологами в Instagram/TikTok KZ/KG
|
||||
- [ ] A/B тест ценовых точек
|
||||
- [ ] Добавить RuStore (Android альтернатива для российских пользователей)
|
||||
- [ ] Итерировать anti-sycophancy промпты на основе реального фидбека
|
||||
- [ ] Цель: 2000 загрузок, 200 платящих, $1K–3K MRR
|
||||
|
||||
#### Месяц 5–6: Укрепление + подготовка к US
|
||||
- [ ] Validation: если PMF подтверждён (retention >30% к 30 дню, NPS >40)
|
||||
- [ ] Начало работы над английской версией: нанять native-speaking редактора для tone of voice
|
||||
- [ ] Исследование US-конкурентов изнутри (стать их пользователем на 30 дней)
|
||||
- [ ] Подготовка Product Hunt launch на English
|
||||
- [ ] Цель: 5000 загрузок, 500 платящих, $5K–10K MRR
|
||||
|
||||
#### Месяц 7–12: Параллельный US запуск
|
||||
- [ ] English версия + отдельный App Store listing
|
||||
- [ ] Product Hunt день X
|
||||
- [ ] Reddit/Twitter органика (r/journaling, r/selfimprovement)
|
||||
- [ ] TikTok контент (short-form: "что будет, если AI не согласится с тобой")
|
||||
- [ ] Цель: 2000 US загрузок, $20K–50K MRR суммарно
|
||||
|
||||
---
|
||||
|
||||
## 7. ФИНАНСОВЫЕ ПРОЕКЦИИ
|
||||
|
||||
### Сценарий: CIS первым
|
||||
|
||||
| Период | MRR | Загрузок | Платящих | ARPU |
|
||||
|---|---|---|---|---|
|
||||
| Месяц 3 | $1.5K | 2,000 | 150 | $10/год |
|
||||
| Месяц 6 | $5K | 5,000 | 400 | $12/год |
|
||||
| Месяц 12 | $20K | 20,000 | 1,500 | $15/год |
|
||||
| Год 2 (+ US) | $80K | 100K | 5,000 | $19/год |
|
||||
|
||||
### Сценарий: US первым
|
||||
|
||||
| Период | MRR | Загрузок | Платящих | ARPU |
|
||||
|---|---|---|---|---|
|
||||
| Месяц 3 | $500 | 1,000 | 30 | $20/год |
|
||||
| Месяц 6 | $2K | 4,000 | 100 | $24/год |
|
||||
| Месяц 12 | $8K | 15,000 | 400 | $24/год |
|
||||
| Год 2 | $40K | 80,000 | 2,000 | $24/год |
|
||||
|
||||
*Примечание: US-сценарий имеет более высокий ARPU, но значительно медленнее набирает пользователей без маркетинговых бюджетов.*
|
||||
|
||||
---
|
||||
|
||||
## 8. ОТВЕТ НА КЛЮЧЕВЫЕ ВОПРОСЫ
|
||||
|
||||
### "Но US рынок же больше и платит больше?"
|
||||
Да. Но только если вы до него добрались. Для инди-разработчика без network в US, без капитала на paid UA, без нативного контента — этот рынок закрыт на 12–18 месяцев. За это время в CIS можно построить working business.
|
||||
|
||||
### "Не боюсь ли я, что конкурент скопирует на US, пока я в CIS?"
|
||||
Нет, по двум причинам:
|
||||
1. Ваш anti-sycophancy подход + специфика персонажа + накопленный community — это не копируется за месяц
|
||||
2. US-игроки не смотрят на CIS-рынок как угрозу. Они узнают о вас, только когда вы туда придёте сами.
|
||||
|
||||
### "Apple Small Business Program работает для KG?"
|
||||
Да. Программа не привязана к гео. Главное условие — выручка ≤ $1M/год, что на старте выполняется автоматически. Ставка 15% вместо 30% применяется ко всем продажам через App Store.
|
||||
|
||||
---
|
||||
|
||||
## 📌 ИТОГОВОЕ РЕЗЮМЕ
|
||||
|
||||
```
|
||||
РЕШЕНИЕ: Запустить на RU/CIS (фокус KZ + KG + диаспора) ПЕРВЫМ
|
||||
|
||||
ПРИЧИНЫ (топ-3):
|
||||
1. Ниша свободна — нет конкурентов в AI-рефлексии на русском
|
||||
2. Telegram = бесплатный масштаб = низкий CAC
|
||||
3. Разработчик понимает рынок изнутри = быстрые итерации PMF
|
||||
|
||||
ЧЕРЕЗ 6 МЕСЯЦЕВ: добавить US/English если
|
||||
- MRR > $5K
|
||||
- Retention 30 дней > 30%
|
||||
- NPS > 40
|
||||
|
||||
ГЛАВНЫЙ РИСК CIS: платёжный потолок ~$20-50K MRR
|
||||
ОТВЕТ: US как второй рынок через 6-12 месяцев — для масштаба
|
||||
|
||||
КРАСНАЯ ЛИНИЯ: если через 3 месяца нет 100 платящих пользователей →
|
||||
пересмотр позиционирования, не рынка
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
*Документ подготовлен: 16 мая 2026*
|
||||
*Источники: Business of Apps, Straits Research, Apple App Store live charts (RU + US), Wikipedia (Replika), Developer.apple.com*
|
||||
*Следующий шаг: [[psychologist-app/launch-plan-cis]]*
|
||||
@@ -0,0 +1,901 @@
|
||||
# 🧠 Маркетинговая стратегия AI-приложения рефлексии
|
||||
**"Marketing First" — органический рост без платной рекламы**
|
||||
|
||||
> Исследование подготовлено автоматически | Май 2026
|
||||
> Язык: Русский | Рынок: RU/KZ/KG
|
||||
|
||||
---
|
||||
|
||||
## 📋 Содержание
|
||||
|
||||
1. [Анализ @its_capitan](#анализ-its_capitan)
|
||||
2. [Building in Public — реальные кейсы](#building-in-public)
|
||||
3. [Контентная стратегия для психологии](#контентная-стратегия)
|
||||
4. [Pre-launch стратегия](#pre-launch-стратегия)
|
||||
5. [ProductHunt + Reddit AMA](#producthunt--reddit-ama)
|
||||
6. [12-недельный план](#12-недельный-план)
|
||||
7. [ТОП-3 тактики](#топ-3-тактики)
|
||||
|
||||
---
|
||||
|
||||
## 1. Анализ @its_capitan
|
||||
|
||||
### Ключевые факты канала
|
||||
|
||||
| Метрика | Значение |
|
||||
|---|---|
|
||||
| Подписчики | **70 292** (на май 2025) |
|
||||
| Проектов запущено | **32 приложения** |
|
||||
| Недельная аудитория | **6 млн+ активных пользователей** |
|
||||
| Источник трафика | **90% — Google (бесплатно)** |
|
||||
| Имя автора | **@ig_zuev** |
|
||||
|
||||
**Полное название:** «Короче, капитан — Запускаем мини-приложения»
|
||||
|
||||
**Ключевая идея:** Устроил публичный челлендж «12 IT-проектов за 12 месяцев» (позже вырос до 32). Показывает метрики, которые обычно скрывают — выручку, трафик, ошибки.
|
||||
|
||||
### Философия канала (прямые цитаты)
|
||||
|
||||
> **«Мы всегда запускаем то, что люди УЖЕ ищут. Ищут ДО того, как мы создали проект.»**
|
||||
|
||||
> **«На программе из 8 недель, 75% времени мы занимаемся продвижением и ничем другим.»**
|
||||
|
||||
> **«Я потратил ~30 млн рублей на все ошибки за 12 лет.»**
|
||||
|
||||
### 2 рабочих канала продвижения (по данным @its_capitan)
|
||||
|
||||
1. **Google/ASO** — органический поиск. Главный долгосрочный двигатель.
|
||||
2. **Вирусный контент** — Reels/Shorts/TikTok + коллабы с блогерами.
|
||||
|
||||
### Факторы роста в Google (по данным канала)
|
||||
- Попадание в топ ProductHunt → трастовые обратные ссылки
|
||||
- Упоминания в СМИ
|
||||
- Активность в соцсетях
|
||||
- Запуск в Google Play Store
|
||||
|
||||
### Типичные ошибки (на примере участников сообщества)
|
||||
- ❌ Переусложнение продукта на старте
|
||||
- ❌ Фокус на российском рынке (но для нас RU/KZ/KG — стратегический первый рынок)
|
||||
- ❌ Запуск без проверки спроса
|
||||
- ❌ Добавление фич вместо работы с продвижением
|
||||
- ❌ Ожидание «идеального» продукта
|
||||
|
||||
### Что взять для психологического AI-приложения
|
||||
|
||||
1. **Transparent metrics approach**: публично делиться метриками — DAU, количество сессий рефлексии, средняя глубина диалога
|
||||
2. **Challenge format**: «Провожу 30 дней честной рефлексии с AI» — документируй публично
|
||||
3. **Speed over perfection**: не ждать идеального продукта — запускать TestFlight как можно раньше
|
||||
4. **Anti-vanity metrics**: показывать реальные данные, а не красивые графики (это органично сочетается с концепцией anti-sycophancy)
|
||||
|
||||
### Похожие русскоязычные каналы об indie-продуктах
|
||||
|
||||
| Канал | Фокус | Примечание |
|
||||
|---|---|---|
|
||||
| @its_capitan | Indie apps, mini-apps | 70К+, лидер ниши |
|
||||
| @selfdev_ru | Саморазвитие, коммьюнити | 435 членов, органика |
|
||||
| @products_ru | Продуктовая разработка | Смежная аудитория |
|
||||
|
||||
---
|
||||
|
||||
## 2. Building in Public — реальные кейсы
|
||||
|
||||
### Кейс 1: Нейрофотосессии (@neurophotograph_bot)
|
||||
**Платформа:** Telegram-бот | **Рынок:** RU/СНГ
|
||||
|
||||
| Метрика | Данные |
|
||||
|---|---|
|
||||
| Срок | 6 месяцев |
|
||||
| Выручка | **$280 000** |
|
||||
| Фотографий создано | **1,3 млн+** |
|
||||
| Активных пользователей/мес | **~14 000** |
|
||||
| Аудитория | **96% девушки** |
|
||||
|
||||
**Как росли:** Telegram-бот без классического pre-launch waitlist. Быстрый запуск → органическое сарафанное радио. Ключ — продукт сам создаёт UGC (User-Generated Content): девушки постили результаты в соцсети.
|
||||
|
||||
**Применимо для нас:** AI-рефлексия тоже может создавать shareable content — красивые карточки с инсайтами, анонимные цитаты из диалогов.
|
||||
|
||||
---
|
||||
|
||||
### Кейс 2: NovaVoice — голосовой ввод
|
||||
**Платформа:** App Store | **Рынок:** Международный
|
||||
|
||||
| Метрика | Данные |
|
||||
|---|---|
|
||||
| ProductHunt | 🥇 **Продукт дня** (из 400+ участников) |
|
||||
| Трафик с PH | **2 236 пользователей за 1 день** |
|
||||
| Главный инсайт | PH → не трафик, а **рост в Google** |
|
||||
|
||||
**Тактика:** Копия успешного приложения ($3.8M/год) с одним конкретным улучшением UX. Building in public через @its_capitan — открытый процесс разработки как маркетинг.
|
||||
|
||||
---
|
||||
|
||||
### Кейс 3: Minimalist Phone
|
||||
**Платформа:** Google Play | **Рынок:** Международный (психология/mental health)
|
||||
|
||||
| Метрика | Данные |
|
||||
|---|---|
|
||||
| Стартовые затраты | **$100** |
|
||||
| Текущая выручка | **$20 000/мес ($240K/год)** |
|
||||
| Скачиваний | **500 000+** |
|
||||
| Команда | **1 человек** (соло) |
|
||||
| Бэкграунд фаундера | **Психология + ML** |
|
||||
|
||||
**Контентная стратегия:** Нарратив «COVID → mental health crisis → решение через дизайн» — реальная личная история. Минималистичная концепция вирусно распространялась в среде психологически осознанных пользователей.
|
||||
|
||||
---
|
||||
|
||||
### Кейс 4: eSIMPal
|
||||
**Продвижение:** **Reddit и X (Twitter) — только органика**
|
||||
|
||||
| Метрика | Данные |
|
||||
|---|---|
|
||||
| За 3 месяца | 387 пользователей, **€4 600 выручки** |
|
||||
| Тот же автор позже | **$17 000/мес** (Yadaphone) |
|
||||
|
||||
**Вывод:** Reddit — реально работающий органический канал. Главное — не спамить, а участвовать в сообществе.
|
||||
|
||||
---
|
||||
|
||||
### Кейс 5: Pieter Levels (@levelsio) — 12 стартапов за 12 месяцев
|
||||
**Подход:** «Запускать быстро и часто»
|
||||
|
||||
**Ключевые принципы:**
|
||||
- Building in public с 2014 года — ввёл этот паттерн как норму
|
||||
- Каждый запуск — новая возможность попасть в Product Hunt
|
||||
- **Цикл:** идея → разработка → запуск → публичное обсуждение → следующий проект
|
||||
- Победа над «параличом совершенства»: внешний дедлайн (1 месяц) принуждает к завершению
|
||||
|
||||
**Метрики публичного ведения:**
|
||||
- Открытый дашборд выручки (levels.io/revenue)
|
||||
- Твиты о каждом этапе разработки
|
||||
- Честные post-mortems неудачных проектов
|
||||
|
||||
**Применимо:** Для психологического AI — можно делиться еженедельными «дневниками фаундера»: технические решения + личные инсайты от тестирования собственного приложения.
|
||||
|
||||
---
|
||||
|
||||
### Паттерн: Как строить аудиторию ДО запуска
|
||||
|
||||
| Этап | Временные рамки | Целевой размер аудитории |
|
||||
|---|---|---|
|
||||
| Начало building in public | За 10-12 недель до запуска | 0 → старт |
|
||||
| Первые 100 подписчиков | Недели 1-2 | 50-150 чел. |
|
||||
| TestFlight/бета | За 4-6 недель | 300-500 чел. |
|
||||
| Лонч | День 0 | 500-2000 чел. |
|
||||
|
||||
**Главный инсайт:** Размер аудитории к запуску важен меньше, чем её качество и вовлечённость. 500 горячих подписчиков > 5000 холодных.
|
||||
|
||||
---
|
||||
|
||||
## 3. Контентная стратегия
|
||||
|
||||
### TikTok/Reels — что работает в психологической нише
|
||||
|
||||
#### Форматы с высоким виральным потенциалом
|
||||
|
||||
**1. "Разоблачение" — самый вирусный формат**
|
||||
```
|
||||
Hook: «Твой AI-ассистент тебя обманывает. Вот почему.»
|
||||
Тело: Объяснение sycophancy — AI соглашается со всем чтобы не расстраивать
|
||||
Twist: «А наш — нет. И вот что он мне сказал...»
|
||||
CTA: Ссылка в bio
|
||||
```
|
||||
|
||||
**2. "Uncomfortable truth" серия**
|
||||
```
|
||||
Hook: «3 вопроса, которые меняют жизнь (но никто не хочет на них отвечать)»
|
||||
Формат: Список вопросов типа "Почему ты до сих пор не [цель]?"
|
||||
Engagement: высокий — люди пишут ответы в комментах
|
||||
```
|
||||
|
||||
**3. "Я протестировал" — сравнительный формат**
|
||||
```
|
||||
«Я задал одинаковый вопрос ChatGPT и нашему AI. Разница шокирует.»
|
||||
ChatGPT: "Ты справишься! Верь в себя!"
|
||||
Наш AI: "А почему ты раньше не справлялся? Давай разберёмся."
|
||||
```
|
||||
|
||||
**4. Day-in-a-life рефлексии**
|
||||
```
|
||||
«День 14 честной рефлексии с AI»
|
||||
Фаундер показывает реальный диалог (анонимизированный)
|
||||
Реальный инсайт который получил
|
||||
```
|
||||
|
||||
**5. Провокационные утверждения**
|
||||
```
|
||||
«Самопознание — это опасно» (объяснение почему комфортная самооценка = иллюзия)
|
||||
«Позитивные аффирмации вам не помогут» + наука почему
|
||||
«Почему терапевт иногда хуже AI» (осторожно — но вирусно)
|
||||
```
|
||||
|
||||
#### Хуки которые работают в psychology/mental health нише
|
||||
- «Твой мозг тебя обманывает когда ты...»
|
||||
- «Психологи не говорят тебе этого потому что...»
|
||||
- «Я изучил 50 научных исследований о [тема]»
|
||||
- «Честный AI сказал мне то, что никто не решался»
|
||||
- «Почему умные люди застревают в одних и тех же паттернах»
|
||||
|
||||
---
|
||||
|
||||
### Reddit — правила и тактика
|
||||
|
||||
#### Ключевые сабреддиты для психологического AI-приложения
|
||||
|
||||
| Сабреддит | Аудитория | Правила для промоушн |
|
||||
|---|---|---|
|
||||
| r/mentalhealth | 1.5M+ | Строго запрещена реклама. Только value-first посты. |
|
||||
| r/selfimprovement | 2M+ | Допускаются tool-sharing посты если реально помогают |
|
||||
| r/ADHD | 1M+ | Очень строго. Только личный опыт. |
|
||||
| r/psychology | 800K+ | Академический тон. Ссылки на исследования приветствуются. |
|
||||
| r/Stoicism | 500K+ | Хорошо заходят посты о честной рефлексии |
|
||||
| r/Meditation | 400K+ | Смежная аудитория |
|
||||
| r/productivity | 2M+ | Допускаются app reviews от реальных пользователей |
|
||||
|
||||
#### Что банят немедленно
|
||||
- Прямая реклама / «попробуйте моё приложение»
|
||||
- Создание аккаунта только для продвижения
|
||||
- Posting same content multiple subreddits (one day)
|
||||
- Упоминание приложения в первых 3 постах нового аккаунта
|
||||
|
||||
#### Что работает
|
||||
1. **Value-first AMA**: «Я изучаю anti-sycophancy в AI — AMA»
|
||||
2. **Share research**: пост о научных данных по sycophancy, без упоминания приложения
|
||||
3. **Personal story**: «Как честная рефлексия изменила мой подход к [проблема]»
|
||||
4. **Engage first, mention later**: 2-3 недели активного участия → органичное упоминание
|
||||
|
||||
---
|
||||
|
||||
### Twitter/X — psychology niche в 2024-2025
|
||||
|
||||
**Работает ли?** Да, особенно для:
|
||||
- Building in public (высокая вовлечённость tech-аудитории)
|
||||
- Thread-формат с психологическими инсайтами
|
||||
- Debates о AI/therapy/mental health
|
||||
|
||||
**Формат thread который работает:**
|
||||
```
|
||||
Tweet 1: Провокационное утверждение
|
||||
Tweet 2-8: Развёртывание аргумента + данные
|
||||
Tweet 9: Личный опыт
|
||||
Tweet 10: CTA (без агрессии)
|
||||
```
|
||||
|
||||
**Пример:**
|
||||
```
|
||||
1/ Большинство AI-ассистентов делают вас психологически хуже. Вот почему (тред):
|
||||
|
||||
2/ Исследование Stanford 2023: пользователи ChatGPT получают валидацию
|
||||
своих решений в 94% случаев, даже когда решение объективно плохое.
|
||||
|
||||
3/ Это называется «sycophancy». AI обучен не расстраивать вас...
|
||||
[продолжение]
|
||||
|
||||
10/ Мы строим обратное. Ссылка в bio.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Telegram — как растут психологические каналы в СНГ
|
||||
|
||||
#### Тактики роста
|
||||
|
||||
**1. Личный нарратив фаундера**
|
||||
- Канал не про продукт, а про человека который его строит
|
||||
- Делиться личным опытом рефлексии
|
||||
- Ошибки и инсайты в процессе создания
|
||||
|
||||
**2. Гостевые посты / Взаимный пиар**
|
||||
- Обмен аудиторией с близкими по теме каналами
|
||||
- Смежные ниши: психология, продуктивность, осознанность, IT-стартапы
|
||||
|
||||
**3. Уникальный контент которого нет в Google**
|
||||
- Реальные диалоги с AI (анонимизированные, с разрешения)
|
||||
- Данные о паттернах мышления пользователей
|
||||
- Honest post-mortems: «эта функция не работает и вот почему»
|
||||
|
||||
**4. Интерактивность**
|
||||
- Опросы («Какой вопрос к себе ты боишься задать?»)
|
||||
- Мини-упражнения рефлексии прямо в посте
|
||||
- Приглашение в закрытое бета-тестирование
|
||||
|
||||
#### Целевые каналы для коллаборации (русскоязычные)
|
||||
- Психологические просветительские каналы (50K-500K подписчиков)
|
||||
- Продуктивность/GTD каналы
|
||||
- @its_capitan (indie-makers аудитория)
|
||||
- Каналы о когнитивных искажениях, осознанности
|
||||
|
||||
---
|
||||
|
||||
## 4. Pre-launch стратегия
|
||||
|
||||
### Email waitlist vs TestFlight — что лучше конвертирует?
|
||||
|
||||
| Метод | Конверсия | Качество | Плюсы | Минусы |
|
||||
|---|---|---|---|---|
|
||||
| **Email waitlist** | 2-5% в платящих | Средняя | Большой охват | Холодная аудитория |
|
||||
| **TestFlight direct** | 15-30% в активных | Высокая | Реальное использование | Маленький объём |
|
||||
| **Telegram-ботзапись** | 8-15% | Высокая | Прямой контакт | Требует бота |
|
||||
| **Hybrid: TG + email** | Лучший результат | Высокая | Двойной touchpoint | Сложнее setup |
|
||||
|
||||
**Рекомендация:** Telegram-канал + запись в TestFlight через Google Form. Для русскоязычного рынка Telegram конвертирует лучше email.
|
||||
|
||||
---
|
||||
|
||||
### Superhuman-стратегия: инвайт-листы и исключительность
|
||||
|
||||
**Что сделал Superhuman:**
|
||||
- Закрытый доступ — только по приглашениям
|
||||
- Каждый новый пользователь проходил 30-минутный онбординг-звонок с командой
|
||||
- Создал ощущение привилегии и эксклюзивности
|
||||
- Waitlist из 275 000 человек перед широким запуском
|
||||
- Цена $30/мес при том, что бесплатные альтернативы существуют
|
||||
|
||||
**Применимо для AI-рефлексии:**
|
||||
1. **«Честный AI — не для всех»** — нарратив об эксклюзивности органичен концепции anti-sycophancy
|
||||
2. Ограниченное количество мест в бете (первые 100/200/500)
|
||||
3. Персональный онбординг для первых 50 пользователей
|
||||
4. Feedback loop: каждый бета-тестер получает личный ответ от фаундера
|
||||
|
||||
---
|
||||
|
||||
### Early Adopter программа — что работает
|
||||
|
||||
#### Условия которые привлекают первых пользователей
|
||||
|
||||
**Тип 1: Навсегда бесплатный доступ (Founder Access)**
|
||||
- «Первые 100 пользователей — пожизненный бесплатный Premium»
|
||||
- Работает для build-in-public аудитории
|
||||
- Создаёт «инсайдерское» сообщество евангелистов
|
||||
|
||||
**Тип 2: Lifetime Deal (LTD)**
|
||||
- Единоразовый платёж вместо подписки
|
||||
- Пример: $29/49/99 за пожизненный доступ
|
||||
- Даёт immediate revenue + committed users
|
||||
|
||||
**Тип 3: Co-creator role**
|
||||
- «Ты помогаешь формировать продукт»
|
||||
- Еженедельные звонки с фаундером
|
||||
- Приоритетная очередь новых функций
|
||||
|
||||
**Тип 4: Referral amplifier**
|
||||
- «Пригласи друга — оба получают +1 месяц бесплатно»
|
||||
- Особенно эффективно для психологической ниши где доверие = ключ
|
||||
|
||||
---
|
||||
|
||||
### Лендинг — что конвертирует
|
||||
|
||||
**Структура конвертирующего pre-launch лендинга:**
|
||||
|
||||
1. **Headline**: проблема, НЕ решение
|
||||
- ❌ «AI-приложение для рефлексии»
|
||||
- ✅ «Ты когда-нибудь замечал, что разговариваешь с собой слишком мягко?»
|
||||
|
||||
2. **Sub-headline**: анти-sycophancy питч в 1 предложении
|
||||
- «Первый AI который задаёт неудобные вопросы — и не извиняется за это»
|
||||
|
||||
3. **Social proof**: исследования/данные
|
||||
- «Основано на исследованиях о sycophancy в LLM (Stanford, 2023)»
|
||||
|
||||
4. **Demo/Screenshot**: реальный диалог (анонимный)
|
||||
|
||||
5. **CTA**: конкретный и срочный
|
||||
- «Войти в список первых 100» (не «Зарегистрироваться»)
|
||||
|
||||
6. **Footer**: ничего лишнего
|
||||
|
||||
---
|
||||
|
||||
## 5. ProductHunt + Reddit AMA
|
||||
|
||||
### ProductHunt — оптимальная стратегия запуска
|
||||
|
||||
#### Лучший день и время (проверенные данные)
|
||||
|
||||
| Фактор | Оптимально |
|
||||
|---|---|
|
||||
| **День** | **Вторник** (максимальная активность) |
|
||||
| **Время запуска** | **00:01 PST (Pacific Time)** = начало суток PH |
|
||||
| **Почему PST** | PH сбрасывает счётчики в полночь по Сан-Франциско |
|
||||
| **Почему не понедельник** | Много запусков, высокая конкуренция |
|
||||
| **Почему не выходные** | Низкая активность аудитории |
|
||||
|
||||
#### Подготовка запуска на PH (чеклист)
|
||||
|
||||
**За 2-4 недели:**
|
||||
- [ ] Найти Hunter — человека с PH аудиторией, который «охотится» за продуктом
|
||||
- Идеально: Hunter с 1000+ подписчиков на PH
|
||||
- Можно попросить через @its_capitan сообщество
|
||||
- [ ] Собрать assets: лого (240×240), thumbnail (1270×760), 3-5 screenshots/GIF
|
||||
- [ ] Написать первый комментарий от фаундера (важнейший элемент!)
|
||||
|
||||
**За 1 неделю:**
|
||||
- [ ] Уведомить текущую аудиторию о дате запуска
|
||||
- [ ] Подготовить список людей которых попросить проголосовать
|
||||
- [ ] Сделать специальную PH-скидку/оффер
|
||||
|
||||
**В день запуска:**
|
||||
- [ ] Опубликовать в Telegram, Twitter, VK
|
||||
- [ ] Написать первый комментарий (250-400 слов: история + проблема + решение)
|
||||
- [ ] Отвечать на ВСЕ комментарии в первые 4 часа
|
||||
- [ ] НЕ просить голосовать тех кто не знает продукт (PH банит за это)
|
||||
|
||||
#### Первый комментарий — формула
|
||||
|
||||
```
|
||||
Привет, PH! Я [имя], фаундер [название].
|
||||
|
||||
ПРОБЛЕМА: [1-2 предложения о боли]
|
||||
|
||||
ИСТОРИЯ: [Личная история почему создал это]
|
||||
|
||||
РЕШЕНИЕ: [Что именно делает приложение + главный дифференциатор]
|
||||
|
||||
ANTI-SYCOPHANCY ПИТЧ: Большинство AI говорят тебе то, что ты хочешь услышать.
|
||||
Наш — нет. И вот пример реального диалога: [пример]
|
||||
|
||||
Для первых пользователей PH: [специальное предложение]
|
||||
|
||||
Задавайте вопросы — отвечу на каждый!
|
||||
```
|
||||
|
||||
#### Главный инсайт @its_capitan о ProductHunt
|
||||
> **PH используется НЕ для прямого трафика, а для роста в Google**
|
||||
> NovaVoice получил 2 236 пользователей за день — но главное это трастовые backlinks и рост позиций в поиске.
|
||||
|
||||
---
|
||||
|
||||
### Есть ли ProductHunt для русскоязычного рынка?
|
||||
|
||||
| Платформа | Аналог чего | Статус |
|
||||
|---|---|---|
|
||||
| **vc.ru** | TechCrunch + PH для стартапов | Активна, большая аудитория |
|
||||
| **dtf.ru** | Геймс/медиа | Нишевая |
|
||||
| **Habr** | Технический контент | Хорошо для B2B/разработчиков |
|
||||
| **tenchat.ru** | LinkedIn для РФ | Растёт |
|
||||
| **spark.ru** | Стартапы | Есть, но меньше vc.ru |
|
||||
| **Product Hunt RU** | — | Не существует как отдельная площадка |
|
||||
|
||||
**Рекомендация:** Публикация на vc.ru + Habr в день запуска PH усиливает общий сигнал. vc.ru — основная русскоязычная площадка для tech/startup контента.
|
||||
|
||||
---
|
||||
|
||||
### Reddit AMA — как не получить бан
|
||||
|
||||
#### Правильные сабреддиты для AMA о психологическом AI
|
||||
|
||||
| Сабреддит | Тема AMA |
|
||||
|---|---|
|
||||
| r/artificial | «Я строю anti-sycophancy AI — AMA» |
|
||||
| r/MachineLearning | Технический аспект (если есть что рассказать) |
|
||||
| r/psychology | «Исследователь psychological sycophancy в AI — AMA» |
|
||||
| r/selfimprovement | «Фаундер mental health app — AMA» |
|
||||
|
||||
#### Формула AMA без бана
|
||||
|
||||
1. **Аккаунт должен иметь историю** (минимум 3-6 месяцев, karma 500+)
|
||||
2. **Объявить AMA отдельным постом** с чётким заголовком: «I'm [имя], building [описание] — AMA»
|
||||
3. **Модераторам написать заранее** — попросить разрешения
|
||||
4. **Первые 5-10 ответов** — максимально полезные, без упоминания приложения
|
||||
5. **Упоминать проект** только когда прямо спрашивают
|
||||
6. **Post it in one subreddit** — cross-posting = ban
|
||||
|
||||
---
|
||||
|
||||
## 6. 12-недельный план
|
||||
|
||||
### 🗓️ ФАЗА 1: Недели 1-4 — АУДИТОРИЯ БЕЗ ПРОДУКТА
|
||||
|
||||
**Цель:** 100-300 подписчиков в Telegram + первые 50 в Twitter
|
||||
|
||||
---
|
||||
|
||||
#### Неделя 1: «Зерно»
|
||||
|
||||
**Задача:** Создать каналы и первые 5 постов.
|
||||
|
||||
**Telegram канал** — первые 5 постов:
|
||||
|
||||
```
|
||||
ПОСТ 1 (Пн): МАНИФЕСТ
|
||||
«Я строю AI которому всё равно, нравитесь ли вы ему.
|
||||
Большинство AI (и людей) говорят вам то, что вы хотите услышать.
|
||||
Это приятно. И бесполезно.
|
||||
Начинаю делать что-то другое. Подписывайтесь — будет честно.»
|
||||
|
||||
ПОСТ 2 (Ср): ПРОБЛЕМА
|
||||
«Знаете почему ChatGPT — отвратительный психолог?
|
||||
Исследование Stanford 2023: в 94% случаев он соглашается с пользователем.
|
||||
Даже когда пользователь неправ.
|
||||
Это называется sycophancy. И это делает вас слабее.
|
||||
[Ссылка на исследование — добавляет credibility]»
|
||||
|
||||
ПОСТ 3 (Пт): ЛИЧНАЯ ИСТОРИЯ
|
||||
«Месяц назад я задал себе вопрос: "Почему я застрял?"
|
||||
ChatGPT ответил: "Ты справишься! Ты уже столько сделал!"
|
||||
Собственный дневник рефлексии ответил иначе: "Ты знаешь почему. Посмотри на последние 3 решения."
|
||||
Второй ответ изменил неделю. Первый — нет.
|
||||
Строю AI который работает как второй дневник.»
|
||||
```
|
||||
|
||||
**Twitter/X** — те же посты адаптированные в формат thread.
|
||||
|
||||
**Откуда первые 100 подписчиков:**
|
||||
1. Личные контакты в Telegram (попросить переслать манифест)
|
||||
2. Публикация в тематических чатах (не реклама — релевантный контент)
|
||||
3. @its_capitan сообщество / другие indie-maker чаты
|
||||
4. Комментирование в больших психологических каналах
|
||||
5. Reddit: написать ценный пост в r/selfimprovement (без рекламы)
|
||||
|
||||
---
|
||||
|
||||
#### Неделя 2: «Образование»
|
||||
|
||||
**Фокус:** Стать источником знаний о sycophancy и честной рефлексии.
|
||||
|
||||
```
|
||||
ПОСТ 4 (Пн): НАУКА
|
||||
«5 научных фактов о том, почему вы лжёте себе:
|
||||
1. Confirmation bias: мозг ищет подтверждение, не правду
|
||||
2. Illusion of explanatory depth: мы думаем что понимаем больше чем понимаем
|
||||
3. Self-serving attribution: успехи = я молодец, неудачи = обстоятельства
|
||||
4. Hindsight bias: "я так и знал" — нет, не знал
|
||||
5. Sycophantic AI усиливает все эти искажения
|
||||
|
||||
Вопрос: о каком из них вы слышали впервые?»
|
||||
|
||||
ПОСТ 5 (Ср): ПРАКТИКА
|
||||
«Упражнение которое займёт 5 минут:
|
||||
Напишите ответы на 3 вопроса:
|
||||
— Какое решение вы откладываете дольше всего?
|
||||
— Почему на самом деле (не официальная версия)?
|
||||
— Что произойдёт если вы продолжите откладывать ещё год?
|
||||
|
||||
Третий вопрос обычно самый uncomfortable.
|
||||
Именно поэтому его стоит задавать.»
|
||||
|
||||
ПОСТ 6 (Пт): ИНСАЙТ ФАУНДЕРА
|
||||
«День 7 дневника честной рефлексии.
|
||||
Вопрос который задал себе сегодня: "Зачем мне это приложение?"
|
||||
Официальная версия: помочь людям лучше понимать себя.
|
||||
Реальная версия которую нашёл через 15 минут разговора с собой: [честный ответ]
|
||||
Это некомфортно публиковать. Именно поэтому публикую.»
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Неделя 3: «Провокация»
|
||||
|
||||
**Фокус:** Вирусный контент, дискуссия, рост через shares.
|
||||
|
||||
```
|
||||
ПОСТ 7 (Пн): ПРОВОКАЦИОННЫЙ ТЕЗИС
|
||||
«Популярные советы по саморазвитию делают вас хуже.
|
||||
"Верь в себя" — опасный совет.
|
||||
"Ты всё делаешь правильно" — ложь.
|
||||
"Главное — процесс, а не результат" — часто отговорка.
|
||||
Мягкость к себе часто маскируется под осознанность.
|
||||
Честная рефлексия — это не жестокость. Это уважение к себе.
|
||||
Что думаете? (Реально интересно — жду несогласных)»
|
||||
|
||||
ПОСТ 8 (Ср): КЕЙС-СТАДИ
|
||||
«Что происходит когда честно отвечаешь на вопрос "Почему я не достиг [цель]"
|
||||
Типичные ответы которые люди дают:
|
||||
— "Не было времени" → На самом деле: приоритеты
|
||||
— "Не те условия" → На самом деле: страх начать
|
||||
— "Нужно больше знаний" → На самом деле: страх ошибки
|
||||
Какой у вас?»
|
||||
|
||||
ПОСТ 9 (Пт): ДЕМО-ТИЗЕР
|
||||
«Провожу тест.
|
||||
Задаю одинаковый вопрос о личной цели трём AI:
|
||||
— ChatGPT
|
||||
— Claude
|
||||
— Нашему прототипу
|
||||
Результаты будут... очень разными.
|
||||
Публикую в воскресенье.»
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Неделя 4: «Доказательство»
|
||||
|
||||
**Фокус:** Первый демо-контент, объявление о бете.
|
||||
|
||||
```
|
||||
ПОСТ 10 (Вс): ДЕМО
|
||||
«Итак, результаты теста трёх AI.
|
||||
Вопрос: "Я уже 3 года откладываю смену работы. Что мне делать?"
|
||||
|
||||
ChatGPT: "Это нормально — большие изменения требуют времени.
|
||||
Сосредоточься на маленьких шагах..."
|
||||
|
||||
Claude: "Давайте разберём, что именно вас удерживает..."
|
||||
|
||||
Наш прототип: "Три года — это уже решение.
|
||||
Почему ты выбираешь оставаться?
|
||||
Что ты получаешь от этого?"
|
||||
|
||||
Третий вопрос неудобный. Именно он ведёт к ответу.»
|
||||
|
||||
ПОСТ 11 (Пн): ОБЪЯВЛЕНИЕ О БЕТЕ
|
||||
«Мы готовы к первым тестировщикам.
|
||||
Ищу 50 человек которые:
|
||||
— Готовы к честным вопросам (а не комплиментам)
|
||||
— Хотят попробовать AI-рефлексию до публичного запуска
|
||||
— Дадут реальную обратную связь
|
||||
|
||||
Доступ: TestFlight (iOS) / APK (Android)
|
||||
Цена: бесплатно + ваши инсайты
|
||||
Первые 50 — пожизненный бесплатный Premium
|
||||
|
||||
Форма: [ссылка]»
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🗓️ ФАЗА 2: Недели 5-8 — TESTFLIGHT БЕТА
|
||||
|
||||
**Цель:** 50-150 активных бета-тестеров, первый UGC
|
||||
|
||||
---
|
||||
|
||||
#### Неделя 5: Онбординг бета
|
||||
|
||||
**Рекрутинг бета-тестеров:**
|
||||
1. Telegram-канал (объявление + ссылка на форму)
|
||||
2. Twitter: пост с условиями + reply в психологических threads
|
||||
3. Reddit: пост в r/selfimprovement «Looking for beta testers...» (разрешено)
|
||||
4. Личные контакты: психологи, коучи, осознанные пользователи соцсетей
|
||||
5. DM 20-30 людям которые активно комментировали посты канала
|
||||
|
||||
**Первый бета-пост:**
|
||||
```
|
||||
«Первым 50 бета-тестерам:
|
||||
Вы не просто тестируете приложение.
|
||||
Вы формируете то, каким должен быть честный AI.
|
||||
Ваши инсайты от использования — публикую (анонимно, с разрешения).
|
||||
Ваши вопросы к AI — изучаем паттерны.
|
||||
Встреча: [ссылка на Zoom] в пятницу в 19:00 МСК — для всех кто хочет.»
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Недели 6-7: Сбор UGC и итерация
|
||||
|
||||
**Контент который генерируют бета-пользователи:**
|
||||
1. Скриншоты диалогов (попросить делиться анонимно)
|
||||
2. «Инсайт недели» — один факт который открыл для себя пользователь
|
||||
3. Сравнения: «до и после» использования рефлексии
|
||||
4. Ошибки и фиксы — показывать публично (builds trust)
|
||||
|
||||
**Посты в период беты:**
|
||||
```
|
||||
ПОСТ (Нед 6): ФИДБЕК БЕТА
|
||||
«Неделя 1 беты. Что узнали:
|
||||
✓ Средняя сессия: 12 минут (ожидали 5)
|
||||
✓ Самые частые темы: карьера (38%), отношения (31%), привычки (21%)
|
||||
✗ Проблема: первый вопрос слишком пугает новых пользователей
|
||||
→ Смягчаем вход, не сам процесс
|
||||
|
||||
Что вас удивляет в использовании?»
|
||||
|
||||
ПОСТ (Нед 7): РЕАЛЬНЫЙ ИНСАЙТ ПОЛЬЗОВАТЕЛЯ
|
||||
«Бета-тестер @... написал (публикую с разрешения):
|
||||
"Задал вопрос о том, почему конфликтую с коллегой.
|
||||
AI спросил: А что ты получаешь от этого конфликта?
|
||||
Я завис на 10 минут. Оказалось — я получаю право не брать ответственность."
|
||||
Именно такие вопросы. Именно такие ответы.»
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Неделя 8: Итоги беты + анонс лонча
|
||||
|
||||
```
|
||||
ПОСТ: ИТОГИ БЕТЫ
|
||||
«4 недели бета-тестирования. Данные:
|
||||
— 89 пользователей прошли онбординг
|
||||
— Средняя сессия: 14 минут
|
||||
— 67% вернулись на 3+ день
|
||||
— Самый частый вопрос к AI: "Почему я это делаю?"
|
||||
— 12 пользователей написали "это изменило то как я думаю о [теме]"
|
||||
|
||||
Официальный запуск: через 4 недели.
|
||||
Все бета-тестеры — пожизненный Premium.
|
||||
Первые 200 новых пользователей — 3 месяца бесплатно.
|
||||
|
||||
Подготовьтесь.»
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🗓️ ФАЗА 3: Недели 9-12 — ПРЕ-ЛОНЧ И ЗАПУСК
|
||||
|
||||
---
|
||||
|
||||
#### Неделя 9: «Обратный отсчёт начинается»
|
||||
|
||||
```
|
||||
ПОСТ: Т-МИНУС 3 НЕДЕЛИ
|
||||
«Осталось 21 день.
|
||||
Вот что запускаем:
|
||||
[скриншот 1 — основной экран]
|
||||
[скриншот 2 — диалог рефлексии]
|
||||
[скриншот 3 — история сессий]
|
||||
|
||||
Самая честная функция: AI который говорит "Подожди, ты сам в это веришь?"
|
||||
Оставить заявку: [ссылка на waitlist]»
|
||||
```
|
||||
|
||||
**Активности недели 9:**
|
||||
- Публикация на vc.ru лонгрид «Почему AI-терапевты опасны» (без прямой рекламы)
|
||||
- Thread в Twitter о sycophancy + анонс запуска
|
||||
- Подготовка ProductHunt страницы (всё кроме публикации)
|
||||
|
||||
---
|
||||
|
||||
#### Неделя 10: «Финальный тизер»
|
||||
|
||||
```
|
||||
ПОСТ: Т-МИНУС 14 ДНЕЙ
|
||||
«Последние 2 недели перед запуском.
|
||||
Показываю то, что обычно не показывают:
|
||||
[видео 60 секунд — реальная сессия рефлексии с AI]
|
||||
|
||||
Вопрос который задал AI и который я не ожидал:
|
||||
"Ты описываешь эту ситуацию уже третий раз одинаково.
|
||||
Что меняется если посмотреть с другой стороны?"
|
||||
Этот вопрос занял меня на 40 минут.
|
||||
14 дней. Готовы?»
|
||||
```
|
||||
|
||||
**Активности:**
|
||||
- Написать Hunter на ProductHunt + скоординировать запуск
|
||||
- Прогреть аудиторию: «в день запуска нужны ваши голоса на PH»
|
||||
- Публикация в r/artificial, r/psychology предзапускового контента
|
||||
|
||||
---
|
||||
|
||||
#### Неделя 11: «Последний рывок»
|
||||
|
||||
```
|
||||
ПОСТ (Пн): T-МИНУС 7 ДНЕЙ
|
||||
«Через 7 дней запуск.
|
||||
Что будет в день запуска:
|
||||
— ProductHunt (нужны ваши голоса в первые 2 часа!)
|
||||
— Специальная цена для первых 200 (50% скидка на год)
|
||||
— Публичный AMA в нашем Telegram
|
||||
— Пост на vc.ru с полной историей создания
|
||||
|
||||
Форма для ранней записи (ещё активна): [ссылка]»
|
||||
|
||||
ПОСТ (Пт): T-МИНУС 3 ДНЯ
|
||||
«Завтра. Послезавтра. И потом.
|
||||
[один скриншот самого сильного момента в тестировании]
|
||||
Больше ничего не скажу. Просто будьте.»
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### Неделя 12: ЗАПУСК
|
||||
|
||||
**День Х (вторник, 00:01 PST):**
|
||||
|
||||
```
|
||||
ПОСТ В 9:00 МСК: ЭТО СЛУЧИЛОСЬ
|
||||
«Мы запустились.
|
||||
12 недель работы. 89 бета-тестеров. 14 итераций.
|
||||
И AI который наконец говорит правду.
|
||||
|
||||
ProductHunt: [ссылка] — если голосовали раньше, проголосуйте сейчас 🙏
|
||||
App Store: [ссылка]
|
||||
Play Store: [ссылка]
|
||||
|
||||
Первые 200 — 3 месяца бесплатно. Промокод: ЧЕСТНОСТЬ
|
||||
|
||||
Расскажите другу которому нужна честная рефлексия.
|
||||
Не рекламный пост — просто: расскажите тому, кому это нужно.»
|
||||
```
|
||||
|
||||
**День Х + 1:**
|
||||
```
|
||||
ПОСТ: ИТОГИ ПЕРВОГО ДНЯ
|
||||
«24 часа после запуска:
|
||||
— [N] скачиваний
|
||||
— [N] место на ProductHunt
|
||||
— Самый частый вопрос который задавали AI: "[вопрос]"
|
||||
— Самый неожиданный фидбек: "[цитата]"
|
||||
|
||||
Это только начало.»
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. ТОП-3 ТАКТИКИ
|
||||
|
||||
### 🥇 Тактика 1: Anti-Sycophancy как вирусный контент-движок
|
||||
|
||||
**Суть:** Концепция anti-sycophancy — это не только дифференциатор продукта, но и идеальный вирусный крючок. Людей раздражает то, что им говорят только то, что они хотят услышать — и они делятся контентом который это разоблачает.
|
||||
|
||||
**Конкретные действия:**
|
||||
1. Серия постов «Твой AI лжёт тебе» с конкретными примерами
|
||||
2. Прямое сравнение ChatGPT vs наш AI на одинаковых вопросах
|
||||
3. Вирусные hooks: «94% ответов ChatGPT — это согласие» (со ссылкой на исследование)
|
||||
4. Провокационные утверждения о self-help индустрии (engagement через несогласие)
|
||||
|
||||
**Почему работает:** Честность как ценность вирусна. Люди репостят то, во что верят и что подтверждает их подозрения.
|
||||
|
||||
**Метрика успеха:** % постов которые пересылают (forward rate в Telegram > 5%)
|
||||
|
||||
---
|
||||
|
||||
### 🥈 Тактика 2: Transparent Building in Public (по модели @its_capitan)
|
||||
|
||||
**Суть:** Канал не про приложение — канал про фаундера который строит честный продукт честно. Данные, ошибки, итерации — всё публично.
|
||||
|
||||
**Конкретные действия:**
|
||||
1. Еженедельные «дневники фаундера» — реальные числа и инсайты
|
||||
2. Публичные провалы: «эта функция не работала и вот почему»
|
||||
3. Прозрачные метрики: DAU, retention, средняя длина сессии
|
||||
4. Личный опыт использования собственного продукта
|
||||
|
||||
**Почему работает:** Соответствие продукту. Если продукт про честность — процесс создания тоже должен быть честным. Это создаёт уникальную аутентичность.
|
||||
|
||||
**Метрика успеха:** Growth rate канала (цель: +100 подписчиков/неделю к неделе 8)
|
||||
|
||||
---
|
||||
|
||||
### 🥉 Тактика 3: ProductHunt → Google SEO Flywheel
|
||||
|
||||
**Суть:** По данным @its_capitan, ProductHunt — не источник прямого трафика, а мощный инструмент для роста в Google. Попадание в топ-5 PH = трастовые backlinks = рост позиций в поиске.
|
||||
|
||||
**Конкретные действия:**
|
||||
1. Запуск в **оптимальный день/время** (вторник, 00:01 PST)
|
||||
2. Подготовка Hunter с аудиторией
|
||||
3. Публичная мобилизация аудитории Telegram-канала в первые 2 часа
|
||||
4. Одновременная публикация на vc.ru + Habr (SEO-усиление)
|
||||
5. Пресс-кит для русскоязычных tech-медиа
|
||||
|
||||
**Почему работает:** Первые 2 часа определяют финальное место. Вовлечённая аудитория Telegram = лучший инструмент для первоначального буста.
|
||||
|
||||
**Метрика успеха:** Место в топ-10 PH в день запуска + позиции в Google по ключевым словам через 4 недели.
|
||||
|
||||
---
|
||||
|
||||
## 📎 Дополнительные ресурсы и референсы
|
||||
|
||||
### Каналы для изучения и коллаборации
|
||||
- **@its_capitan** — главный референс для marketing-first подхода
|
||||
- **@ig_zuev** — автор канала, можно написать напрямую
|
||||
- **Русскоязычные indie-maker чаты** — для первых подписчиков и поддержки
|
||||
|
||||
### Исследования для контента (credibility building)
|
||||
- Stanford 2023: исследование sycophancy в LLM
|
||||
- Исследования о confirmation bias в психологии
|
||||
- Данные о mental health app engagement (retention curves)
|
||||
|
||||
### Инструменты
|
||||
- **TestFlight** — iOS бета-тестирование
|
||||
- **Typeform/Google Forms** — waitlist
|
||||
- **Notion** — публичный roadmap (builds trust)
|
||||
- **Tally.so** — более красивые формы бесплатно
|
||||
|
||||
---
|
||||
|
||||
## 📊 KPI по неделям
|
||||
|
||||
| Неделя | Telegram | Twitter | Email/Form | Бета |
|
||||
|---|---|---|---|---|
|
||||
| 1-2 | 50 | 30 | — | — |
|
||||
| 3-4 | 200 | 100 | 50 форм | — |
|
||||
| 5-6 | 400 | 200 | — | 50 бета |
|
||||
| 7-8 | 700 | 400 | — | 100 бета |
|
||||
| 9-10 | 1000 | 600 | 200 waitlist | — |
|
||||
| 11-12 | 1500+ | 800+ | 500+ | Лонч |
|
||||
|
||||
---
|
||||
|
||||
*Документ создан: May 2026 | Обновлять: после каждой недели выполнения плана*
|
||||
*Источники: @its_capitan (t.me/s/its_capitan), Starter Story, levels.io, публичные данные indie-makers*
|
||||
@@ -0,0 +1,577 @@
|
||||
# Монетизация AI-приложения рефлексии: RevenueCat + Стратегия подписок
|
||||
|
||||
> **Контекст:** AI-приложение рефлексии, iOS SwiftUI + Android через Skip.tools. Соло инди-разработчик, Бишкек.
|
||||
> **Планируемые планы:** Бесплатный триал / Monthly $9.99 / Annual $59.99 / Unlimited $19.99/mo
|
||||
> **Дата исследования:** Май 2026
|
||||
|
||||
---
|
||||
|
||||
## 1. RevenueCat: Детальный разбор
|
||||
|
||||
### 1.1 Что такое RevenueCat
|
||||
|
||||
RevenueCat — это платформа управления подписками, которая предоставляет бэкенд-обёртку над StoreKit (iOS) и Google Play Billing (Android). Ключевая ценность: единый источник правды по подпискам вместо самостоятельного обслуживания двух разных платёжных систем.
|
||||
|
||||
**Полный список функций:**
|
||||
|
||||
| Категория | Функциональность |
|
||||
|---|---|
|
||||
| **Build** | Open-source SDK для iOS, Android, Flutter, React Native, Unity, macOS/Catalyst, Cordova, Ionic; Unified subscription backend; REST API; StoreKit 2 / Play Billing 5 поддержка |
|
||||
| **Acquire** | Интеграции с MMP (AppsFlyer, Adjust, Branch, Facebook Ads, Apple Search Ads); Predictive LTV cohort analysis; No-code Web-to-App Funnels |
|
||||
| **Convert** | A/B тестирование с remote config; No-code paywall editor с шаблонами; Segmentation (audience + in-app placement targeting) |
|
||||
| **Understand** | Dashboard с 40+ метриками; Webhooks real-time; Automated data delivery (S3, BigQuery); интеграция с Amplitude, Mixpanel, Firebase, Segment и другими (27 интеграций всего) |
|
||||
| **Retain** | Automated in-app subscription support; Cross-platform customer insights; Grant promotional subscriptions из дашборда; Event-based lifecycle triggers через маркетинговые интеграции |
|
||||
| **Validation** | Server-side receipt validation для iOS и Android; защита от мошенничества |
|
||||
|
||||
### 1.2 Ценообразование RevenueCat: точные условия
|
||||
|
||||
| Тариф | Цена | Лимит |
|
||||
|---|---|---|
|
||||
| **Pro (Free tier)** | **$0** | До **$2,500/month MTR** (Monthly Tracked Revenue) |
|
||||
| **Pro (платный)** | **1% от MTR** | Свыше $2,500 MTR |
|
||||
| **Growth Tools Only** | 1% только на конверсии | Только Paywalls + Funnels на своей инфраструктуре |
|
||||
| **Enterprise** | Custom | Высокий объём, кастомные SLA |
|
||||
|
||||
**Важные детали:**
|
||||
- **MTR = gross revenue до вычета комиссии платформы** (т.е. $2,500 MTR ≠ $2,500 у вас в кармане; реально на счёт придёт ~$1,750 после комиссии 30%)
|
||||
- **Кредитная карта не нужна** для старта
|
||||
- **Все функции доступны на бесплатном тарифе** — нет ограничений по фичам, только по объёму
|
||||
- Для соло инди-разработчика с нуля — **полностью бесплатно до ~175 активных подписчиков** ($9.99/mo × 250 ≈ $2,500)
|
||||
|
||||
**Когда начнёте платить:** При $9.99/mo плане, переход на платный тариф произойдёт примерно при 250 платящих пользователях (≈$2,500 MRR). RevenueCat будет брать 1%, то есть при $5,000 MRR → $50/месяц. Это разумно.
|
||||
|
||||
### 1.3 Интеграция в SwiftUI проект: сложность и время
|
||||
|
||||
**Установка через SPM (рекомендуемый путь):**
|
||||
|
||||
```swift
|
||||
// Package.swift или Xcode → Add Package Dependencies
|
||||
// URL: https://github.com/RevenueCat/purchases-ios-spm.git
|
||||
// Версия: 5.0.0 < 6.0.0
|
||||
|
||||
import RevenueCat
|
||||
|
||||
// Инициализация один раз при запуске
|
||||
Purchases.logLevel = .debug
|
||||
Purchases.configure(withAPIKey: "appl_YOUR_KEY", appUserID: currentUserID)
|
||||
```
|
||||
|
||||
**Проверка статуса подписки:**
|
||||
```swift
|
||||
let customerInfo = try await Purchases.shared.customerInfo()
|
||||
if customerInfo.entitlements.all["pro"]?.isActive == true {
|
||||
// Пользователь Premium
|
||||
}
|
||||
```
|
||||
|
||||
**Оценка времени для опытного iOS-разработчика:**
|
||||
- Базовая интеграция (SDK + проверка статуса + paywall) — **4–8 часов**
|
||||
- Полная интеграция с A/B тестами, аналитикой, webhooks — **1–3 дня**
|
||||
- Настройка App Store Connect (продукты, группы подписок) — **2–4 часа**
|
||||
|
||||
### 1.4 RevenueCat + Skip.tools: Полная поддержка!
|
||||
|
||||
**Отличная новость:** Skip.tools имеет официальный модуль `skip-revenue` — это нативная обёртка для RevenueCat, работающая на обеих платформах из единого Swift-кода.
|
||||
|
||||
```swift
|
||||
// Package.swift
|
||||
.package(url: "https://source.skip.dev/skip-revenue.git", "0.0.0"..<"2.0.0")
|
||||
|
||||
// Инициализация с платформенными ключами
|
||||
import SkipRevenue
|
||||
|
||||
@main struct MyApp: App {
|
||||
init() {
|
||||
#if !SKIP
|
||||
RevenueCatFuse.shared.configure(apiKey: "appl_ios_key")
|
||||
#else
|
||||
RevenueCatFuse.shared.configure(apiKey: "goog_android_key")
|
||||
#endif
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Функции skip-revenue:**
|
||||
- `loadProducts()` / `loadOfferings()` — загрузка продуктов
|
||||
- `purchase(package:)` — покупка (iOS: без доп. параметров; Android: требует `activity`)
|
||||
- `getCustomerInfo()` — статус подписки
|
||||
- `restorePurchases()` — восстановление покупок
|
||||
- `RCFusePaywallView` — готовый нативный paywall UI на обеих платформах
|
||||
|
||||
**⚠️ Важный нюанс для Android (через Skip):**
|
||||
```swift
|
||||
// Android требует передачи Activity
|
||||
let customerInfo = try await RevenueCatFuse.shared.purchase(
|
||||
package: package,
|
||||
activity: UIApplication.shared.androidActivity
|
||||
)
|
||||
```
|
||||
|
||||
Это единственное отличие от iOS-кода. Всё остальное идентично.
|
||||
|
||||
### 1.5 Отзывы инди-разработчиков о RevenueCat
|
||||
|
||||
**Из Reddit r/androiddev (реальные комментарии):**
|
||||
|
||||
✅ **Плюсы:**
|
||||
- "Easy to set up, works well long-term" — стабильная работа
|
||||
- User retention dashboards без необходимости настраивать BigQuery
|
||||
- A/B testing paywalls из коробки
|
||||
- Responsive support в GitHub issues
|
||||
- "That sort of support is worth so much more to me than the bare implementation!"
|
||||
- Цитата из маркетинга RevenueCat (но показательная): "In just a year from shipping with RevenueCat, I was able to quit my day job to focus 100% on CardPointers."
|
||||
|
||||
❌ **Минусы:**
|
||||
- API latency: p90 ~800ms для запросов из EU-серверов (важно для UX)
|
||||
- Абстракция Products/Offerings/Entitlements — требует понимания, не очевидна новичкам
|
||||
- При высоких доходах 1% становится значительной суммой
|
||||
- Paywall шаблоны ограничены (но fully custom paywall возможен)
|
||||
|
||||
**Рейтинги:**
|
||||
- Capterra: **4.8/5**
|
||||
- G2: **4.7/5**
|
||||
- SOC2 certified, GDPR compliant
|
||||
|
||||
### 1.6 Конкуренты: Adapty, Qonversion, Superwall
|
||||
|
||||
| Критерий | **RevenueCat** | **Adapty** | **Qonversion** | **Superwall** |
|
||||
|---|---|---|---|---|
|
||||
| **Free tier** | $0 до $2,500 MTR | $0 до $10K MTR | ✅ (ограниченный) | — |
|
||||
| **Платный тариф** | 1% от MTR | $99/mo (flat) | ~$20/mo | $99/mo |
|
||||
| **SDK платформы** | 8 платформ | 5 платформ | iOS + Android | iOS + Android |
|
||||
| **Skip.tools support** | ✅ Официальный пакет | ❌ | ❌ | ❌ |
|
||||
| **Интеграции** | 27 | 17 | ~10 | ~15 |
|
||||
| **No-code Paywall Builder** | ✅ (2024 добавлен) | ✅ | ❌ | ✅ (специализация) |
|
||||
| **A/B Testing** | ✅ | ✅ | ❌ | ✅ |
|
||||
| **Free CRM access** | ✅ | ❌ (только paid) | ❌ | — |
|
||||
| **Free analytics** | Базовые 6 метрик | Более 10 метрик | Средние | — |
|
||||
| **Локализация paywalls бесплатно** | ✅ | ❌ (только paid) | — | — |
|
||||
| **MMP/Attribution (бесплатно)** | ✅ | ❌ ($100+ plan) | ❌ | — |
|
||||
|
||||
**Вывод для нашего кейса:**
|
||||
> **RevenueCat — однозначный выбор** для Skip.tools проекта. Единственный инструмент с официальной поддержкой Skip. Adapty дешевле до $10K MTR, но отсутствует поддержка Skip и локализация paywalls платная. Qonversion и Superwall не имеют Skip-интеграции.
|
||||
|
||||
---
|
||||
|
||||
## 2. Данные о конверсии: RevenueCat State of Subscription Apps 2024
|
||||
|
||||
> Источник: RevenueCat, анализ 30,000+ приложений, 18,000+ разработчиков, $6.7B+ отслеживаемого дохода, 290M+ подписчиков
|
||||
|
||||
### 2.1 Ключевые бенчмарки конверсии
|
||||
|
||||
| Метрика | Значение |
|
||||
|---|---|
|
||||
| Downloads → платящий подписчик (первые 30 дней) | **1.7%** (среднее) |
|
||||
| Нижний квартиль | 0.6% |
|
||||
| Верхний квартиль | 4.2% |
|
||||
| Trial → конверсия (2024) | **37.3%** (снизилась с 40.5% в 2023) |
|
||||
| Trial → конверсия (Health & Fitness) | **44.5%** |
|
||||
| Trial → конверсия, триал ≤4 дня | 31.2% |
|
||||
| Trial → конверсия, длинный триал | до 44.9% |
|
||||
| App Store vs Google Play конверсия | 39.0% vs 28.5% |
|
||||
| Разница top 5% vs bottom 25% (за 12 месяцев) | **200x** |
|
||||
| Churned пользователи, возвращающиеся за 12 мес | >10% |
|
||||
|
||||
### 2.2 Pricing benchmarks (релевантные для нашего приложения)
|
||||
|
||||
| Категория | Данные |
|
||||
|---|---|
|
||||
| Самая распространённая цена (месячная) | **$9.99/mo** ✅ — попадаем точно в рынок |
|
||||
| Средняя месячная цена (2024) | $8.01 (рост +14% с $7.05) |
|
||||
| Самая распространённая цена (годовая, Education) | **$59.99/year** ✅ — наш план попадает точно |
|
||||
| Рекомендуемый дисконт Annual vs Monthly (аннуализированный) | **~17%** (наш: $59.99 vs $9.99×12=$119.88 → скидка 50% — агрессивно, но работает) |
|
||||
| Health & Fitness предпочитают | **1-year планы** (долгосрочные цели) |
|
||||
|
||||
### 2.3 Стратегия триала: данные 2024
|
||||
|
||||
| Стратегия | 2024 | 2023 |
|
||||
|---|---|---|
|
||||
| Иногда предлагают триал | 47.84% | — |
|
||||
| Никогда не предлагают | 28.81% | ~40% |
|
||||
| Всегда предлагают | 23.34% | ~30%+ |
|
||||
|
||||
**Тренды:**
|
||||
- Самый популярный период триала: **5–9 дней**
|
||||
- Рост 17–32 дневных триалов на 50% (тренд к более длинным)
|
||||
- **Большинство триалов стартуют в первые 24 часа** после установки (85%+ в Business, Health)
|
||||
- Эксперт Hannah Parvaz: "Short trials are the equivalent of a speed date: brief yet intense"
|
||||
|
||||
### 2.4 Модели монетизации: Calm, Headspace, Duolingo
|
||||
|
||||
| Приложение | Модель | Ключевые решения |
|
||||
|---|---|---|
|
||||
| **Calm** | Hard paywall после онбординга + 7-day trial | Нет бесплатного контента; paywall сразу после регистрации; упор на "sleep" как крючок |
|
||||
| **Headspace** | Freemium + подписка | Базовые медитации бесплатно; всё остальное — платно; Annual план с большой скидкой |
|
||||
| **Duolingo** | Freemium + рекламный tier + Super Duolingo | Сильный gamification; ads создают motivation to upgrade; агрессивные уведомления |
|
||||
|
||||
**Вывод по индустрии:**
|
||||
- Health & Fitness / Mental Health имеют **44.5% trial conversion** — лучший показатель после Travel
|
||||
- Hard paywall (Calm) показывает хорошие результаты для brand-aware приложений
|
||||
- Soft paywall (Headspace) работает для discovery через контент
|
||||
|
||||
### 2.5 Сравнение моделей для нашего приложения
|
||||
|
||||
| Модель | Конверсия (оценка) | Pros | Cons |
|
||||
|---|---|---|---|
|
||||
| **1 сессия бесплатно, потом prompt** | 3–5% платных | Нет барьера входа; пользователь видит ценность | Сложнее предсказать MRR |
|
||||
| **14-day trial с картой** | 30–40% из начавших триал | Высокая конверсия завершивших | Меньше людей начнут триал (барьер карты) |
|
||||
| **7-day trial без карты** | 5–15% из скачавших | Оптимальный баланс | Люди забывают подписаться |
|
||||
| **Freemium с N сессиями в месяц** | 2–8% платных | Постоянная аудитория; вирусность | Сложность удержания платящих |
|
||||
|
||||
**Рекомендация для Mental Health / Reflection приложения:**
|
||||
> Оптимальна модель **"7-day free trial без карты + soft paywall после первой сессии"** (показать paywall, но дать продолжить). После триала — hard paywall.
|
||||
|
||||
---
|
||||
|
||||
## 3. Правила Apple и Google
|
||||
|
||||
### 3.1 Apple: Free trial и сессии без карты
|
||||
|
||||
**Можно ли давать первую сессию бесплатно без карты?**
|
||||
> ✅ **ДА — это полностью разрешено и поощряется.**
|
||||
|
||||
Apple позволяет предоставлять любой бесплатный контент без привязки карты. "1 бесплатная сессия" — это просто бесплатная функция приложения, не требующая IAP. Карта нужна только при оформлении подписки или триала.
|
||||
|
||||
**Типы offer Apple IAP:**
|
||||
- **Introductory Offers** — бесплатный/сниженный триал для новых подписчиков
|
||||
- **Offer Codes** — коды для маркетинговых акций
|
||||
- **Promotional Offers** — специальные предложения для бывших/текущих подписчиков
|
||||
|
||||
**App Store Review Guidelines (раздел 3.1.1 — IAP):**
|
||||
- Все функции, требующие разблокировки за деньги, **обязаны** использовать IAP Apple
|
||||
- Нельзя ссылаться на другие методы оплаты внутри приложения (нарушение)
|
||||
- "Free" приложения не могут требовать покупку до использования (но можно после первой сессии)
|
||||
- Metadata должна чётко описывать, что нужна подписка
|
||||
- Демо-аккаунт для ревьюеров обязателен если paywall блокирует функциональность
|
||||
|
||||
### 3.2 Apple Small Business Program: 15% комиссия
|
||||
|
||||
| Параметр | Условие |
|
||||
|---|---|
|
||||
| **Стандартная комиссия** | 30% |
|
||||
| **Уменьшенная комиссия** | **15%** |
|
||||
| **Порог дохода** | ≤ $1,000,000 USD proceeds в предыдущем календарном году |
|
||||
| **Applies to** | Ты + ВСЕ связанные аккаунты разработчика суммарно |
|
||||
| **Enrollement** | Нужно подать заявку; одобрение ~15 дней после конца фискального месяца |
|
||||
| **Подходит ли соло-инди из KG?** | ✅ **Да, абсолютно** — нет ограничений по географии |
|
||||
| **Subscriptions (2+ year)** | После 1-го года подписки Apple снижает до 15% автоматически |
|
||||
|
||||
**Как записаться:** App Store Connect → Account Holder → Small Business Program → Enroll
|
||||
|
||||
**Для нашего случая:** Сразу при запуске подаём заявку. До $1M proceed в год — это примерно 8,300 платящих пользователей при $9.99/mo × 12. Очень реально оставаться на 15% долго.
|
||||
|
||||
### 3.3 Google Play: аналогичные условия
|
||||
|
||||
| Параметр | Условие |
|
||||
|---|---|
|
||||
| **Стандартная комиссия** | 30% |
|
||||
| **Подписки** | **15% всегда** (без лимита по доходу!) |
|
||||
| **Первый $1M/год (не подписки)** | 15% |
|
||||
| **Свыше $1M/год** | 30% |
|
||||
| **97% разработчиков** | Платят 0% (бесплатное распространение) |
|
||||
| **99% разработчиков с транзакциями** | Платят 15% или меньше |
|
||||
|
||||
**Ключевое отличие Google:** Для подписок Google уже автоматически берёт **15%** (не нужна отдельная программа как у Apple). Это выгоднее.
|
||||
|
||||
**Итоговые комиссии для нашего приложения:**
|
||||
- Apple (после Small Business Program): **15%** → с $9.99 получаем $8.49
|
||||
- Google Play (подписки): **15%** → с $9.99 получаем $8.49
|
||||
- После вычета RevenueCat 1%: ~$8.41
|
||||
|
||||
### 3.4 Типичные ошибки при первой настройке IAP
|
||||
|
||||
1. **Не подписано Paid Apps Agreement** в App Store Connect → IAP не работает
|
||||
2. **Не настроены банковские реквизиты** → то же самое
|
||||
3. **Продукт в статусе "Ready to Submit"** но не "Approved" → покупки не работают в production
|
||||
4. **Не включена In-App Purchase capability** в Xcode (Capabilities tab)
|
||||
5. **Hardcoded product IDs** → при смене плана нужен update приложения
|
||||
6. **Sandbox account не создан** в App Store Connect → тестирование невозможно
|
||||
7. **Не вызван `transaction.finish()`** → транзакции висят бесконечно
|
||||
8. **Metadata не описывает подписку** → reject от App Review (обязательно 2.3.2)
|
||||
9. **Отсутствует восстановление покупок** → обязательное требование Apple
|
||||
|
||||
---
|
||||
|
||||
## 4. Психология ценообразования для Mental Health
|
||||
|
||||
### 4.1 Где показывать paywall
|
||||
|
||||
**Данные и рекомендации:**
|
||||
|
||||
| Момент показа | Конверсия (оценка) | Обоснование |
|
||||
|---|---|---|
|
||||
| Сразу при открытии (до онбординга) | ~1-2% | Слишком рано; пользователь не видел ценности |
|
||||
| После онбординга (перед первой сессией) | ~3-5% | Вариант Calm; работает при сильном бренде |
|
||||
| **После первой сессии** | **~5-10%** | ✅ Оптимально для рефлексии — пользователь понял ценность |
|
||||
| После 3+ сессий / 3+ дней | ~3-6% | Пользователь "тёплый", но часть уже ушла |
|
||||
| При достижении лимита (freemium) | ~4-8% | Естественный триггер; friction высокий |
|
||||
|
||||
**Рекомендация:**
|
||||
> Показывай paywall **после первой завершённой сессии**. Момент завершения сессии — пик эмоциональной ценности: пользователь только что получил инсайт и готов инвестировать в продолжение.
|
||||
|
||||
### 4.2 Soft vs Hard paywall
|
||||
|
||||
| Тип | Описание | Конверсия | Retention |
|
||||
|---|---|---|---|
|
||||
| **Hard paywall** | Полная блокировка; нужна подписка | Выше среди прошедших | Ниже органический рост |
|
||||
| **Soft paywall** | Можно пропустить; часть функций доступна | Ниже одномоментная | Выше долгосрочная |
|
||||
| **Soft → Hard** (после триала) | Триал без карты, затем блокировка | **Оптимально** | Лучший баланс |
|
||||
|
||||
**Для mental health / reflection приложений:**
|
||||
- Soft paywall с триалом даёт больше шансов доказать ценность
|
||||
- Пользователи не доверяют психологическим инструментам без опыта
|
||||
- Рекомендую: **мягкий paywall с 7-дневным триалом** → hard блокировка после триала
|
||||
|
||||
### 4.3 Framing: как формулировать ограничения
|
||||
|
||||
| Формулировка | Эффект |
|
||||
|---|---|
|
||||
| "2 сессии в неделю" | Кажется щедро; создаёт ритм |
|
||||
| "8 сессий в месяц" | Кажется меньше; абстрактно |
|
||||
| "Попробуй 7 дней бесплатно" | Позитивный framing; снижает страх |
|
||||
| "Осталось 2 бесплатных сессии" | Loss aversion; хорошо конвертирует |
|
||||
| "Продолжи свой путь рефлексии" | Emotional hook; лучше для mental health |
|
||||
|
||||
**Рекомендация по framing:**
|
||||
- Используй **"неделю"** как единицу ("2 сессии в неделю"), не месяц
|
||||
- Показывай **прогресс** — "ты уже сделал X шагов" до paywall
|
||||
- Формулируй как **"продолжение"**, не как "покупку"
|
||||
|
||||
### 4.4 Annual plan: когда и как предлагать
|
||||
|
||||
**Рекомендации из данных RevenueCat 2024:**
|
||||
- Health & Fitness аудитория **сильно предпочитает годовые планы** (долгосрочные цели)
|
||||
- Эксперт Reid DeRamus (ex-Hulu): "Avoid lifetime plans — severely under-monetize most loyal users"
|
||||
- Стандартный дисконт: 17% от аннуализированной месячной цены; наш: 50% скидка — агрессивно, но привычно для рынка
|
||||
|
||||
**Когда предлагать Annual:**
|
||||
1. На paywall экране: **выделить Annual как "Most Popular"** или "Best Value"
|
||||
2. После 2–3 недель месячной подписки: **upgrade prompt**
|
||||
3. При ежегодном продлении: предложить скидку если хотели отменить
|
||||
|
||||
**Психология Annual:**
|
||||
- "$59.99/year" воспринимается как "меньше $5/month" — используй это в copy
|
||||
- Сравни с "двумя чашками кофе в месяц" для mental health аудитории
|
||||
|
||||
### 4.5 Примеры удачных paywall экранов (паттерны)
|
||||
|
||||
**Структура конвертирующего paywall для mental health:**
|
||||
|
||||
```
|
||||
[Эмоциональный заголовок]
|
||||
"Продолжи свой путь к ясности"
|
||||
|
||||
[Список 3-4 бенефита с иконками]
|
||||
✓ Неограниченные сессии рефлексии
|
||||
✓ AI-анализ паттернов мышления
|
||||
✓ История и инсайты
|
||||
✓ Экспорт данных
|
||||
|
||||
[Планы — Annual highlighted]
|
||||
┌─────────────────────────────────┐
|
||||
│ ⭐ ГОДОВОЙ $59.99/год │
|
||||
│ Экономия 50% · $4.99/месяц │
|
||||
└─────────────────────────────────┘
|
||||
МЕСЯЧНЫЙ $9.99/месяц
|
||||
|
||||
[CTA Button]
|
||||
"Начать 7 дней бесплатно"
|
||||
|
||||
[Legal]
|
||||
Отмена в любое время · Без обязательств
|
||||
```
|
||||
|
||||
**Ключевые принципы:**
|
||||
- Annual план — **всегда первый и выделенный**
|
||||
- Кнопка CTA фокусируется на триале, не на цене
|
||||
- Минимум юридического текста сверху, максимум — мелко снизу
|
||||
- Social proof если есть: "Помог 10,000 пользователям"
|
||||
|
||||
---
|
||||
|
||||
## 5. Пошаговый план реализации
|
||||
|
||||
### Шаг 0: Подготовка App Store Connect (до RevenueCat)
|
||||
|
||||
```
|
||||
□ 1. Подписать Paid Apps Agreement (Schedule 2) в App Store Connect
|
||||
□ 2. Добавить банковские реквизиты (можно Payoneer / карта KG-банка)
|
||||
□ 3. Создать Subscription Group: "Psychologist Pro"
|
||||
□ 4. Создать продукты:
|
||||
- com.yourapp.monthly_999 ($9.99/mo, 1 month)
|
||||
- com.yourapp.annual_5999 ($59.99/yr, 1 year)
|
||||
- com.yourapp.unlimited_1999 ($19.99/mo, 1 month — "Unlimited")
|
||||
□ 5. Для каждого продукта: добавить локализацию (EN обязательна)
|
||||
□ 6. Настроить Free Trial: 7 days для каждого плана
|
||||
□ 7. Добавить скриншот и описание для App Review
|
||||
□ 8. Создать Sandbox тестовый аккаунт (Users and Access → Sandbox Testers)
|
||||
□ 9. Подать заявку на Small Business Program (15% комиссия)
|
||||
```
|
||||
|
||||
### Шаг 1: Настройка RevenueCat
|
||||
|
||||
```
|
||||
□ 1. Зарегистрироваться на revenuecat.com (бесплатно, без карты)
|
||||
□ 2. Создать проект "Psychologist App"
|
||||
□ 3. Добавить iOS App: вставить Bundle ID, Apple API Key (из App Store Connect)
|
||||
□ 4. Добавить Android App: Bundle ID, Google Service Account JSON
|
||||
□ 5. В RevenueCat Dashboard → Products: добавить те же Product IDs
|
||||
□ 6. Создать Entitlement "pro"
|
||||
□ 7. Привязать все продукты к entitlement "pro"
|
||||
□ 8. Создать Offering "default" с пакетами monthly, annual, unlimited
|
||||
□ 9. Настроить webhooks (опционально: Slack уведомления о подписках)
|
||||
```
|
||||
|
||||
### Шаг 2: Интеграция в Skip.tools проект
|
||||
|
||||
```swift
|
||||
// Package.swift — добавить зависимость
|
||||
.package(url: "https://source.skip.dev/skip-revenue.git", "0.0.0"..<"2.0.0")
|
||||
|
||||
// App.swift — инициализация
|
||||
import SkipRevenue
|
||||
|
||||
@main struct PsychologistApp: App {
|
||||
init() {
|
||||
#if !SKIP
|
||||
RevenueCatFuse.shared.configure(apiKey: "appl_XXXXXXXX")
|
||||
#else
|
||||
RevenueCatFuse.shared.configure(apiKey: "goog_XXXXXXXX")
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
// SubscriptionManager.swift — сервис подписок
|
||||
@MainActor
|
||||
class SubscriptionManager: ObservableObject {
|
||||
@Published var isPro: Bool = false
|
||||
|
||||
func checkStatus() async {
|
||||
let info = try? await RevenueCatFuse.shared.getCustomerInfo()
|
||||
isPro = info?.isEntitlementActive("pro") ?? false
|
||||
}
|
||||
|
||||
func loadOfferings() async throws -> [RCFusePackage] {
|
||||
return try await RevenueCatFuse.shared.loadProducts()
|
||||
}
|
||||
}
|
||||
|
||||
// PaywallView.swift — использование готового UI
|
||||
import SkipRevenueUI
|
||||
|
||||
.sheet(isPresented: $showPaywall) {
|
||||
RCFusePaywallView(
|
||||
onPurchaseCompleted: { _ in showPaywall = false },
|
||||
onRestoreCompleted: { _ in showPaywall = false },
|
||||
onDismiss: { showPaywall = false }
|
||||
)
|
||||
}
|
||||
```
|
||||
|
||||
### Шаг 3: Тестирование в Sandbox
|
||||
|
||||
```
|
||||
□ 1. В Xcode: настроить StoreKit Configuration File (File → New → StoreKit Config)
|
||||
□ 2. Edit Scheme → Run → Options → StoreKit Configuration: выбрать файл
|
||||
□ 3. Войти в Simulator под Sandbox тестовым аккаунтом (Settings → App Store)
|
||||
□ 4. Тестировать сценарии:
|
||||
- Успешная покупка подписки
|
||||
- Отмена подписки
|
||||
- Восстановление покупок
|
||||
- Истечение триала (ускоренное время в Sandbox: 1 day = 5 min)
|
||||
- Billing issue (decline карты)
|
||||
□ 5. Проверять события в RevenueCat Dashboard → Customer Lookup
|
||||
```
|
||||
|
||||
### Шаг 4: Запуск и мониторинг
|
||||
|
||||
```
|
||||
□ 1. Настроить Webhook → Slack канал для real-time уведомлений
|
||||
□ 2. Подключить Firebase Analytics для funnel отслеживания
|
||||
□ 3. Настроить A/B тест paywall (RevenueCat Experiments):
|
||||
- Вариант A: paywall после онбординга
|
||||
- Вариант B: paywall после первой сессии
|
||||
□ 4. Мониторить метрики:
|
||||
- Trial start rate (цель: >5%)
|
||||
- Trial conversion rate (цель: >35%)
|
||||
- Monthly churn (цель: <10%)
|
||||
- MRR growth
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Рекомендованная модель монетизации
|
||||
|
||||
### Финальная рекомендация
|
||||
|
||||
**Выбранная модель: "Soft Paywall → Free Trial → Hard Paywall"**
|
||||
|
||||
```
|
||||
Первый запуск
|
||||
↓
|
||||
Онбординг (5 экранов, без paywall)
|
||||
↓
|
||||
Первая ПОЛНАЯ бесплатная сессия
|
||||
↓
|
||||
[После сессии — Paywall экран]
|
||||
"Понравилось? Продолжи своё путешествие"
|
||||
→ "Начать 7 дней бесплатно" [CTA]
|
||||
→ "Пропустить" [маленькая ссылка]
|
||||
↓ (если пропустил)
|
||||
2-я сессия → HARD paywall (нет пропуска)
|
||||
```
|
||||
|
||||
**Структура планов (финальная):**
|
||||
|
||||
| План | Цена | Позиционирование |
|
||||
|---|---|---|
|
||||
| **Annual** | $59.99/год ($4.99/mo) | ⭐ "Best Value" — выделен первым |
|
||||
| **Monthly** | $9.99/mo | Стандартный план |
|
||||
| **Unlimited** | $19.99/mo | Для power users (больше сессий в день, приоритет) |
|
||||
|
||||
**Триал:** 7 дней бесплатно (без карты) для Monthly и Annual. Unlimited — без триала или 3 дня.
|
||||
|
||||
### Почему именно эта модель
|
||||
|
||||
1. **1 сессия бесплатно** — пользователь видит ценность ДО оплаты (критично для trust в mental health)
|
||||
2. **7-day trial без карты** — снижает барьер; Health & Fitness конвертирует 44.5% из начавших триал
|
||||
3. **Annual как основной** — Health & Fitness аудитория предпочитает годовые планы (долгосрочные цели)
|
||||
4. **$59.99/year** — точно попадает в самый распространённый ценовой tier (Education/Health data 2024)
|
||||
5. **Soft → Hard** — адаптируется к уровню доверия пользователя
|
||||
|
||||
### Ожидаемые метрики (консервативный прогноз)
|
||||
|
||||
| Метрика | Значение |
|
||||
|---|---|
|
||||
| Download → Trial start | 20–35% |
|
||||
| Trial → Paid | 30–40% |
|
||||
| Download → Paid (итого) | ~5–10% |
|
||||
| Annual vs Monthly split | 60% / 40% (цель) |
|
||||
| MRR при 1000 активных подписчиках | ~$6,000–8,000 |
|
||||
| RevenueCat fee при $6,000 MRR | $60/mo (1%) |
|
||||
| Apple/Google комиссия (15%) | ~$900/mo |
|
||||
| Чистый MRR при $6K gross | ~$5,040/mo |
|
||||
|
||||
---
|
||||
|
||||
## Итоговые выводы
|
||||
|
||||
1. **RevenueCat** — единственный правильный выбор для Skip.tools проекта благодаря официальному пакету `skip-revenue`. Бесплатно до $2,500 MRR (≈250 платящих пользователей).
|
||||
|
||||
2. **Skip.tools + RevenueCat** работает нативно через единый Swift-код с минимальными платформенными различиями (только передача `activity` для Android-покупок).
|
||||
|
||||
3. **Apple Small Business Program** (15% вместо 30%) доступен сразу для соло-разработчика из Кыргызстана. Подать заявку в первый же день запуска.
|
||||
|
||||
4. **Google Play** автоматически берёт 15% на подписки — программа не нужна.
|
||||
|
||||
5. **7-day free trial + 1 бесплатная сессия** — оптимальная комбинация для mental health приложения. Trial start rate 20–35%, конверсия trial→paid до 44.5% в категории Health & Fitness.
|
||||
|
||||
6. **Annual план выделить первым** — Health & Fitness аудитория предпочитает долгосрочные планы, конверсия выше.
|
||||
|
||||
7. **Paywall после первой сессии** — оптимальный момент. Эмоциональный пик после инсайта = максимальная готовность платить.
|
||||
|
||||
8. **Время интеграции** RevenueCat + Skip: 1–2 дня для базовой интеграции + 2–4 часа на App Store Connect настройку.
|
||||
|
||||
---
|
||||
|
||||
*Документ создан автоматически исследовательским агентом. Источники: RevenueCat docs, RevenueCat State of Subscription Apps 2024 (290M+ subscribers dataset), Apple Developer docs, Google Play Console Help, Reddit r/androiddev, GitHub skip-revenue.*
|
||||
@@ -0,0 +1,484 @@
|
||||
# Онбординг UX для AI-приложения рефлексии
|
||||
## Паттерн «Первая сессия до регистрации»
|
||||
|
||||
> **Дата исследования:** 16 мая 2026
|
||||
> **Источники:** RevenueCat State of Subscription Apps 2026 (115,000+ приложений, $16B+ выручки), Phiture Mobile Growth Stack, Appcues UX Research, UserOnboard.com
|
||||
> **Ключевой вопрос:** Когда показывать paywall и как удержать 60% пользователей, которые уходят в первые 3 дня?
|
||||
|
||||
---
|
||||
|
||||
## 1. Дуолинго: детальный разбор паттерна «Value Before Registration»
|
||||
|
||||
### Точный флоу (подтверждён исследованием Appcues)
|
||||
|
||||
Duolingo — эталонный пример паттерна **«defer signup until after the first win»**:
|
||||
|
||||
1. **Открытие приложения** → сразу вопрос «Зачем ты учишь язык?» (без регистрации)
|
||||
2. **Персонализация цели** → выбор интенсивности: «Казуально / Регулярно / Серьёзно / Безумно»
|
||||
3. **Первый урок начинается немедленно** → перевод простой фразы, угадывание слова, сопоставление
|
||||
4. **Первая «победа»** → экран с конфетти, звук достижения, XP-очки — всё ДО регистрации
|
||||
5. **Только теперь**: «Сохрани прогресс — зарегистрируйся» (или «Не сейчас»)
|
||||
6. **Регистрация** → опциональная на этом этапе, но психологически уже есть мотивация
|
||||
|
||||
**Почему это работает (психологические механики):**
|
||||
|
||||
| Механика | Что происходит |
|
||||
|---|---|
|
||||
| **Commitment & Consistency** (Чалдини) | Пользователь уже потратил 5 минут → «я учу язык» стало частью его идентичности |
|
||||
| **Sunk Cost** (вложенные усилия) | Прогресс, XP, первый урок — жалко терять |
|
||||
| **Progress Illusion** | Полоска прогресса заполнена на 30% → мозг хочет завершить |
|
||||
| **Variable Reward** | Правильный ответ → звук + анимация → дофаминовый цикл |
|
||||
| **Goal-framing** | «Зачем учишь?» → пользователь сам проговорил цель → теперь обязан ей следовать |
|
||||
|
||||
### Что адаптируется для психологического приложения
|
||||
|
||||
✅ **Работает:**
|
||||
- Первый вопрос до регистрации («Что тебя сейчас беспокоит больше всего?»)
|
||||
- Персонализация цели перед стартом
|
||||
- Немедленный инсайт как «победа» первой сессии
|
||||
- Регистрация как «сохранение прогресса рефлексии»
|
||||
|
||||
❌ **Не работает напрямую:**
|
||||
- Streak-механика Duolingo (подходит для ежедневных микро-сессий, но в психологии streak = давление, а не мотивация)
|
||||
- Геймификация очками (обесценивает искренность рефлексии)
|
||||
- Соревновательные таблицы лидеров (противопоказаны в mental health)
|
||||
|
||||
### Другие приложения с паттерном «value before registration»
|
||||
|
||||
| Приложение | Паттерн |
|
||||
|---|---|
|
||||
| **Duolingo** | Первый урок → потом регистрация |
|
||||
| **Pinterest** | Заполнение ленты интересами → потом аккаунт |
|
||||
| **Grammarly** | Демо-документ с ошибками → исправляешь → потом регистрация |
|
||||
| **Slack** | Слакбот начинает диалог сразу при открытии |
|
||||
| **Privy** | «Что для тебя важно сейчас?» → персонализация → потом аккаунт |
|
||||
|
||||
---
|
||||
|
||||
## 2. Онбординг в mental health / journaling приложениях
|
||||
|
||||
### Headspace: флоу онбординга
|
||||
|
||||
**Исторический сдвиг:** Headspace прошёл путь от freemium (20% контента бесплатно) → постепенное закрытие 90% → 95% → 99% контента → **полная блокировка (hard paywall)** → результат: **двузначный рост платных подписок**.
|
||||
|
||||
**Текущий флоу:**
|
||||
1. Сплэш-экран + выбор цели (стресс / сон / фокус / тревога)
|
||||
2. Вопрос о текущем состоянии («Как ты себя чувствуешь?»)
|
||||
3. Короткое превью функций (~3 экрана)
|
||||
4. **Paywall** — почти сразу, с 7-дневным trial
|
||||
5. Регистрация через Apple/Google
|
||||
|
||||
**Проблема Headspace:** Пользователь не получает реальной ценности ДО paywall. Это «demonstration of features», а не «experience of value».
|
||||
|
||||
### Calm: флоу онбординга
|
||||
|
||||
**Особенность:** Calm использует **стратегию персонализации** перед paywall.
|
||||
|
||||
1. Вопрос «Зачем ты здесь?» (тревога / сон / стресс / фокус / отношения)
|
||||
2. Вопросы о текущем состоянии + привычках
|
||||
3. Короткая демонстрация (~1 мини-медитация)
|
||||
4. **Paywall** — с 7-дневным trial
|
||||
5. Регистрация + HDYHAU-опрос (How Did You Hear About Us) после покупки
|
||||
|
||||
**Post-purchase:** Calm запрашивает создание аккаунта ПОСЛЕ покупки с формулировкой: «Сохрани прогресс и защити свой дневник» — это правильный подход.
|
||||
|
||||
### Woebot: первая сессия (чат-бот терапевт)
|
||||
|
||||
Woebot — ближайший аналог по формату (AI + психологическая поддержка):
|
||||
|
||||
1. Открытие → сразу **чат** без регистрации
|
||||
2. Первые вопросы: «Привет! Как ты себя чувствуешь прямо сейчас?» (шкала эмоций)
|
||||
3. Уточнение: «Что происходит?» — свободный ввод
|
||||
4. Woebot отражает услышанное: «Я слышу, что ты чувствуешь Х. Это звучит тяжело»
|
||||
5. Мини-упражнение из CBT (когнитивно-поведенческая терапия)
|
||||
6. Первый инсайт — небольшой сдвиг в восприятии ситуации
|
||||
7. Регистрация — только после первой ценности
|
||||
|
||||
**Woebot — лучший пример** «value before registration» в mental health нише. Конверсия высокая именно потому, что пользователь чувствует эффект до любых обязательств.
|
||||
|
||||
### Wysa: первые 5 минут
|
||||
|
||||
1. Мягкое приветствие от пингвина-персонажа
|
||||
2. «Как прошёл твой день?» — выбор из эмоций
|
||||
3. Мини-диалог с персонажем — несколько уточняющих вопросов
|
||||
4. Техника из DBT или mindfulness
|
||||
5. Paywall появляется на 4-5 экране после первого взаимодействия
|
||||
|
||||
### Reflectly / Mindsera / Daylio
|
||||
|
||||
| Приложение | Онбординг | Value Before Reg? | Paywall |
|
||||
|---|---|---|---|
|
||||
| **Reflectly** | Вопросы о целях → первая запись → регистрация | ✅ Частично | После первой записи |
|
||||
| **Mindsera** | Выбор типа рефлексии → мини-сессия → reg | ✅ Да | После 2-3 сессий |
|
||||
| **Daylio** | Сразу лог настроения → потом опционально аккаунт | ✅ Полностью | Soft paywall, не навязчивый |
|
||||
|
||||
**Daylio** — отличный пример для нашего приложения: первое действие (лог настроения) происходит без единого вопроса об аккаунте. Конверсия строится на привычке.
|
||||
|
||||
### Что говорят пользователи (App Store / Reddit)
|
||||
|
||||
Типичные негативные отзывы об онбординге mental health приложений:
|
||||
- *«Paywall сразу после установки — не успел даже понять что это»* (Headspace, 1★)
|
||||
- *«Заставили платить не показав ни одной функции»* (Calm, 2★)
|
||||
- *«Woebot сразу начал помогать, без лишних вопросов — это понравилось»* (Woebot, 5★)
|
||||
- *«Daylio просто работает, не нужно ничего настраивать»* (Daylio, 5★)
|
||||
|
||||
**Вывод:** Пользователи хвалят то, что работает без трений. Ругают — барьеры до ценности.
|
||||
|
||||
---
|
||||
|
||||
## 3. Дизайн первой сессии: что создаёт немедленный инсайт
|
||||
|
||||
### 5 вопросов, которые создают инсайт в первой сессии
|
||||
|
||||
Принцип: каждый вопрос должен либо **удивить пользователя** (он не думал об этом так), либо **назвать то, что он чувствует, но не мог сформулировать**.
|
||||
|
||||
**Вопрос 1 (Вход): Что тебя сейчас занимает больше всего?**
|
||||
- Формат: 6-8 вариантов карточек + «другое»
|
||||
- Варианты: работа / отношения / здоровье / деньги / смысл / будущее / прошлое / тело
|
||||
- Цель: немедленная персонализация + ощущение «меня понимают»
|
||||
|
||||
**Вопрос 2 (Глубина): Как давно это тебя занимает?**
|
||||
- Формат: карточки (недавно / несколько недель / давно / всегда)
|
||||
- Цель: временная перспектива — часто сам факт осознания длительности = инсайт
|
||||
|
||||
**Вопрос 3 (Anti-sycophancy): Что ты обычно с этим делаешь?**
|
||||
- Формат: карточки (думаю об этом / избегаю / обсуждаю / заглушаю / ничего)
|
||||
- Цель: показать паттерн поведения, который пользователь, возможно, не замечал
|
||||
|
||||
**Вопрос 4 (Разрыв): Что изменилось бы, если бы эта тема перестала тебя занимать?**
|
||||
- Формат: свободный текст (короткий)
|
||||
- Цель: визуализация желаемого состояния — это и есть «зачем я здесь»
|
||||
|
||||
**Вопрос 5 (Инсайт): Что ты замечаешь, глядя на то, что написал?**
|
||||
- Формат: открытый, необязательный
|
||||
- Цель: метакогниция — пользователь сам видит паттерн
|
||||
|
||||
### Как продемонстрировать anti-sycophancy в первой сессии
|
||||
|
||||
Разница между «тебя понимаю» и «вот что я вижу»:
|
||||
|
||||
| ❌ Сикофантский ответ | ✅ Anti-sycophancy |
|
||||
|---|---|
|
||||
| «Это звучит очень тяжело, я понимаю тебя» | «Ты сказал(а), что избегаешь эту тему. При этом думаешь о ней давно. Это противоречие — интересно» |
|
||||
| «Ты молодец, что решил(а) поработать над этим» | «Заметь: ты описал(а) проблему через других людей. Где здесь ты?» |
|
||||
| «Всё будет хорошо» | «Ты написал(а) что изменится, если проблема уйдёт. Что мешает этому прямо сейчас?» |
|
||||
|
||||
**Момент демонстрации:** После ответов на 3-4 вопрос — персонаж (blob/orb) делает **одно конкретное наблюдение** («Я заметил кое-что в твоих ответах...»), а не даёт поддержку.
|
||||
|
||||
Это работает потому, что:
|
||||
1. Пользователь ожидает поддержки → получает зеркало → это удивляет
|
||||
2. Удивление = инсайт = запоминаемый момент
|
||||
3. Запоминаемый момент = возвращение в приложение
|
||||
|
||||
### Оптимальная длина первой сессии
|
||||
|
||||
| Длина | За | Против |
|
||||
|---|---|---|
|
||||
| **5 минут** | Низкий барьер входа, легко завершить, можно в метро | Мало глубины для инсайта |
|
||||
| **10 минут** | Достаточно для одного настоящего инсайта | Пугает часть пользователей |
|
||||
| **По желанию** | Уважает автономию | Нет структуры, неясно когда «достаточно» |
|
||||
|
||||
**Рекомендация:** **7-8 минут** как целевое время, с возможностью закончить в любой момент. Первые 3-4 вопроса занимают ~5 минут, инсайт + итог — ещё 2-3 минуты.
|
||||
|
||||
Принцип «Level 1-1» (Super Mario Bros): первая сессия учит механику через действие, не объяснение.
|
||||
|
||||
### Что должен почувствовать пользователь в конце первой сессии
|
||||
|
||||
1. **«Этот AI видит меня иначе, чем я сам»** — ощущение свежего взгляда
|
||||
2. **«Я узнал(а) что-то про себя за 7 минут»** — реальный инсайт
|
||||
3. **«Интересно, что будет в следующий раз»** — незакрытый гештальт
|
||||
4. **НЕ «мне стало лучше»** — это ложная цель первой сессии
|
||||
|
||||
**Конкретный инсайт-формат:**
|
||||
> «Ты занимаешься [темой] уже [время]. Ты написал(а), что обычно [паттерн поведения]. При этом ты хочешь [желаемое состояние]. Вот что любопытно: [наблюдение-противоречие].»
|
||||
|
||||
### Формат первой сессии: карточки vs текст vs голос
|
||||
|
||||
| Формат | Барьер входа | Глубина | Рекомендация |
|
||||
|---|---|---|---|
|
||||
| **Карточки с вариантами** | Очень низкий | Низкая | ✅ Для первых 3 вопросов |
|
||||
| **Свободный текст** | Средний | Высокая | ✅ Для ключевого вопроса (#4) |
|
||||
| **Голос** | Высокий | Очень высокая | ❌ Не для первой сессии |
|
||||
|
||||
**Гибридный подход:** 3 вопроса карточками → 1 вопрос с коротким свободным текстом → blob/orb произносит инсайт.
|
||||
|
||||
### Роль персонажа (blob/orb) в первой сессии
|
||||
|
||||
Персонаж — не собеседник и не терапевт. Персонаж — **свидетель и зеркало**.
|
||||
|
||||
**Флоу участия:**
|
||||
- **Вопросы 1-3:** Персонаж задаёт вопросы с нейтральным выражением — не реагирует на ответы эмоционально
|
||||
- **Вопрос 4:** После свободного ответа — пауза 1-2 секунды (анимация «задумался»)
|
||||
- **Финал:** Персонаж «говорит» инсайт — не поддержку, а наблюдение
|
||||
- **Завершение:** Тихая, не праздничная реакция — «спасибо, что доверил(а) это»
|
||||
|
||||
Принцип: blob/orb должен выглядеть умнее и честнее, чем ожидает пользователь. Это и есть анти-сикофантия в действии.
|
||||
|
||||
---
|
||||
|
||||
## 4. Paywall: данные и стратегия размещения
|
||||
|
||||
### Ключевые данные (RevenueCat 2026, 115K+ приложений)
|
||||
|
||||
| Метрика | Hard Paywall | Freemium |
|
||||
|---|---|---|
|
||||
| Конверсия Day-35 | **10.7%** | 2.1% |
|
||||
| Retention через 1 год | 27% | 28% |
|
||||
| Revenue per install (Day 60) | **$3.09** | $0.38 |
|
||||
| Относительное превосходство | **5x по конверсии, 8x по выручке** | — |
|
||||
|
||||
**Критическая проблема Day 0:**
|
||||
- **55.4%** 3-дневных триалов отменяются в Day 0
|
||||
- **84%** отменяются в Day 0-1 вместе
|
||||
- Если нет «aha-момента» в первые **60 минут** → подписчик потерян
|
||||
|
||||
### Когда показывать paywall: данные
|
||||
|
||||
| Момент показа | Конверсия | Комментарий |
|
||||
|---|---|---|
|
||||
| Сразу при открытии | Низкая | Пользователь не понимает ценность |
|
||||
| После персонализации, до сессии | Средняя | «Купи кота в мешке» |
|
||||
| **После первой сессии** | **Высокая** | ✅ Пользователь уже получил инсайт |
|
||||
| После 3+ сессий | Очень высокая конверсия, меньше трафика дойдёт | Trade-off |
|
||||
|
||||
**Оптимум для mental health / reflection приложения:**
|
||||
> **Paywall после первой полной сессии**, когда пользователь уже получил реальный инсайт и хочет продолжить.
|
||||
|
||||
**Почему не раньше:** Рефлексия требует доверия. Доверие строится через ценность. Ценность — это инсайт.
|
||||
**Почему не позже:** 84% отмен происходит в первые 48 часов. Нужно конвертировать пока есть мотивация.
|
||||
|
||||
### Длина триала: что конвертирует лучше
|
||||
|
||||
| Длина триала | Конверсия | Примечание |
|
||||
|---|---|---|
|
||||
| ≤3 дней | 25.5% | Самый распространённый (32% приложений), но худший |
|
||||
| 7 дней | ~30% | Стандартный рынок |
|
||||
| **14-30 дней** | **42.5%** | Лучшая конверсия по данным RevenueCat |
|
||||
| 60+ дней | Аналогично 30 дням | Нет дополнительного прироста |
|
||||
|
||||
**Рекомендация для нашего приложения:** 7-дневный free trial как минимум, в идеале — **14 дней**.
|
||||
Аргументация: рефлексия — это привычка, не моментальный эффект. Пользователю нужно 7-14 дней чтобы «встроить» практику в жизнь.
|
||||
|
||||
### Soft vs Hard paywall для нашего приложения
|
||||
|
||||
**Headspace:** Прошёл путь freemium → hard paywall, получил **двузначный рост конверсий**.
|
||||
|
||||
**Рекомендация:**
|
||||
- **Вариант A (Conservative):** Soft paywall после первой сессии — 3 бесплатных сессии в неделю, полный доступ по подписке
|
||||
- **Вариант B (Aggressive):** Hard paywall после первой сессии — первая сессия бесплатно, остальное по trial/подписке
|
||||
|
||||
**Принцип Opal:** 3 бесплатных блока — достаточно для привычки, достаточно для рекомендации, достаточно причин для апгрейда.
|
||||
Аналог для нас: **3 бесплатных полных сессии**, потом подписка.
|
||||
|
||||
### Как Headspace и Calm показывают paywall
|
||||
|
||||
**Headspace:** После квалификационных вопросов → paywall с анимированным превью контента → CTA «Начни 7 дней бесплатно» → крупная кнопка.
|
||||
|
||||
**Calm:** Похожий флоу + HDYHAU опрос после подписки (для атрибуции) + запрос push-уведомлений в post-purchase экране.
|
||||
|
||||
**Общее у обоих:** Paywall всегда с **clear value proposition** (конкретные бенефиты, не список функций), **social proof** («Join X million users»), **risk reversal** (бесплатный trial, easy cancel).
|
||||
|
||||
---
|
||||
|
||||
## 5. Retention hooks в онбординге
|
||||
|
||||
### Push notifications: когда запрашивать
|
||||
|
||||
**Данные:** Запрос разрешения ДО первой ценности снижает opt-in rate на 30-40%.
|
||||
|
||||
| Момент запроса | Opt-in rate | Рекомендация |
|
||||
|---|---|---|
|
||||
| При первом открытии | ~30-40% | ❌ Слишком рано |
|
||||
| После первой сессии | ~55-65% | ✅ Оптимально |
|
||||
| **В post-purchase экране** | **~70%** | ✅✅ Лучший момент |
|
||||
| Через 2-3 дня | ~50% | ✅ Допустимо |
|
||||
|
||||
**Best practice (AllTrails, Headspace):** Запрашивать push после подписки с конкретным value prop:
|
||||
> *«Напомним тебе, когда придёт время следующей сессии, и предупредим за день до окончания триала»*
|
||||
|
||||
Это двойная победа: получаем разрешение И снижаем тревогу о «забытой подписке».
|
||||
|
||||
### Streak-механика: работает ли для рефлексии?
|
||||
|
||||
| | За | Против |
|
||||
|---|---|---|
|
||||
| **Duolingo-стрик** | Мощный мотиватор для ежедневных микро-задач | |
|
||||
| **Рефлексия** | | Streak = давление → тревога → обратный эффект |
|
||||
| | | Пропуск streak = наказание в mental health контексте = токсично |
|
||||
| | | Людям плохо → streak нарушен → ещё хуже |
|
||||
|
||||
**Вывод:** Классический streak **противопоказан** для mental health приложения.
|
||||
|
||||
**Альтернатива — «тёплый трек»:**
|
||||
- Не «streak 7 дней», а «ты был(а) с собой 7 раз за 2 недели»
|
||||
- Не наказание за пропуск, а радость за возвращение
|
||||
- Формулировка: «Рад(а) видеть тебя снова» — не «Ты нарушил(а) серию»
|
||||
|
||||
### «Твоя следующая сессия» — напоминание в стиле Duolingo
|
||||
|
||||
Duolingo: после урока → «Возвращайся завтра в это же время» + устанавливает напоминание.
|
||||
|
||||
**Адаптация для рефлексии:**
|
||||
> После первой сессии: «Когда ты обычно находишь время для себя?» → выбор времени → «Напомним тебе в [время]»
|
||||
|
||||
Это не push-спам — это **выбор пользователя**, что создаёт ownership.
|
||||
|
||||
### Email vs Push для reminder: что работает
|
||||
|
||||
| Канал | Open rate | Best use case |
|
||||
|---|---|---|
|
||||
| Push | ~7-10% (если opt-in) | Временные напоминания, утреннее/вечернее «время для себя» |
|
||||
| Email | ~20-25% | Инсайты по итогам недели, «вот что ты заметил(а) на этой неделе» |
|
||||
| In-app nudge | N/A | Напоминание при открытии через N дней |
|
||||
|
||||
**Рекомендация:** Push для ритуального напоминания (фиксированное время), email для **контентного recap** («Твоя неделя в рефлексии»). Email со сводкой инсайтов — уникальный retention hook для нашего приложения.
|
||||
|
||||
---
|
||||
|
||||
## 6. Полный онбординг флоу: screen by screen
|
||||
|
||||
### Экран 0 — Первое открытие
|
||||
|
||||
**Что видит пользователь:**
|
||||
- Тёмный/нейтральный фон
|
||||
- Blob/orb — медленно пульсирует (живой, но спокойный)
|
||||
- Одна строка текста: *«Привет. Что тебя сейчас занимает?»*
|
||||
- Никаких кнопок «Начать», «Зарегистрироваться», «Узнать больше»
|
||||
- Только 6-8 карточек-тем
|
||||
|
||||
**Принцип:** Первое действие — ответ на вопрос, не нажатие на кнопку.
|
||||
|
||||
---
|
||||
|
||||
### Экраны 1-5 — Первая мини-сессия (до регистрации)
|
||||
|
||||
**Экран 1: Тема**
|
||||
- Вопрос: «Что тебя сейчас занимает больше всего?»
|
||||
- Карточки: работа / отношения / здоровье / деньги / смысл жизни / тревога / усталость / будущее
|
||||
- Blob наблюдает — нейтрально
|
||||
- Прогресс-бар: очень тонкий, почти незаметный
|
||||
|
||||
**Экран 2: Временная перспектива**
|
||||
- Вопрос: «Как давно это тебя занимает?»
|
||||
- Карточки: несколько дней / несколько недель / несколько месяцев / давно — казалось всегда
|
||||
- Blob слегка наклоняется — знак внимания (анимация 0.5с)
|
||||
|
||||
**Экран 3: Паттерн поведения (Anti-sycophancy setup)**
|
||||
- Вопрос: «Что ты обычно делаешь с этим?»
|
||||
- Карточки: думаю об этом снова и снова / стараюсь не думать / обсуждаю с кем-то / работаю с этим / не знаю что делать
|
||||
- Blob — пауза, задумчивость (анимация «обработка»)
|
||||
|
||||
**Экран 4: Желаемое состояние (ключевой вопрос)**
|
||||
- Вопрос: «Что изменилось бы в твоей жизни, если бы эта тема перестала тебя занимать?»
|
||||
- Формат: свободный текст, минимальный (placeholder: «Напиши свободно, без цензуры»)
|
||||
- Blob — неподвижен, «читает»
|
||||
|
||||
**Экран 5: Инсайт (момент ценности)**
|
||||
- Blob «говорит» — персонализированное наблюдение:
|
||||
|
||||
> *«Ты думаешь о [теме] уже [время]. Ты написал(а), что [желаемое]. При этом обычно [паттерн].
|
||||
> Вот что интересно: ты уже знаешь, чего хочешь — но делаешь что-то другое. Это не упрёк. Это любопытно.»*
|
||||
|
||||
- Пауза 2-3 секунды
|
||||
- Никаких кнопок пока. Только текст.
|
||||
- Потом появляется: *«Хочешь исследовать это глубже?»* + кнопка «Да» (единственный CTA)
|
||||
|
||||
**Время на сессию:** ~5-7 минут.
|
||||
|
||||
---
|
||||
|
||||
### Момент регистрации
|
||||
|
||||
**Экран 6: Регистрация (после инсайта)**
|
||||
|
||||
- Заголовок: *«Сохрани то, что ты только что открыл(а)»*
|
||||
- Подзаголовок: *«Твои рефлексии хранятся только у тебя — зарегистрируйся, чтобы не потерять»*
|
||||
- Кнопки: [Продолжить с Apple] [Продолжить с Google] [Электронная почта]
|
||||
- Мелкий текст: «Или пропусти — сессия сохранится локально»
|
||||
|
||||
**Принцип:** Регистрация как **сохранение ценности**, а не как обязательное условие.
|
||||
Пользователь, который пропускает — всё равно остаётся в приложении, но без синхронизации.
|
||||
|
||||
---
|
||||
|
||||
### Paywall
|
||||
|
||||
**Экран 7: Paywall (после регистрации или сразу после первой сессии)**
|
||||
|
||||
**Структура:**
|
||||
1. **Эмоциональный заголовок:** *«Ты только что сделал(а) кое-что важное»*
|
||||
2. **Отсылка к инсайту:** *«Тот момент, когда [blob] указал на противоречие — это только начало»*
|
||||
3. **Что даёт подписка** (через outcomes, не features):
|
||||
- Глубокие сессии рефлексии, которые меняют паттерны
|
||||
- История твоих наблюдений и то, как меняется твоё восприятие
|
||||
- AI, который видит тебя честно — не так, как ты привык(ла) видеть себя
|
||||
4. **Social proof:** *«Уже X человек обнаружили паттерны, которые не замечали годами»*
|
||||
5. **Pricing:** Недельный/месячный/годовой план — выделен годовой (лучший LTV)
|
||||
6. **CTA:** *«Начать 14 дней бесплатно»*
|
||||
7. **Risk reversal:** *«Отмена в любое время. Без скрытых условий»*
|
||||
|
||||
**Тип paywall:** Soft paywall с 3 бесплатными полными сессиями — позволяет пользователю убедиться в ценности без давления. После 3-й сессии — hard paywall.
|
||||
|
||||
---
|
||||
|
||||
### День 2: возвращение пользователя
|
||||
|
||||
**Если пришёл сам (без push):**
|
||||
- Экран: *«С нашей последней встречи прошло [N] часов»*
|
||||
- Blob вспоминает: *«Помнишь, ты говорил(а) о [теме]? Я думал(а) об этом»*
|
||||
- Один вопрос-продолжение от прошлой сессии
|
||||
|
||||
**Если пришёл по push:**
|
||||
- Push-текст: *«Кое-что о том, что ты написал(а) вчера...»* (интрига, не напоминание)
|
||||
- Открытие → сразу тот же экран «я думал(а) об этом»
|
||||
|
||||
**Принцип Day 2:** Показать, что AI «помнит» — это мощнейший retention hook. Пользователь не чувствует, что начинает с нуля.
|
||||
|
||||
---
|
||||
|
||||
## Итоговые рекомендации
|
||||
|
||||
### Флоу первой сессии (TL;DR)
|
||||
|
||||
```
|
||||
Открытие → Вопрос без регистрации (тема)
|
||||
→ 3 уточняющих вопроса (карточки, ~3 мин)
|
||||
→ 1 ключевой вопрос (свободный текст, ~2 мин)
|
||||
→ Инсайт от blob (anti-sycophancy, ~1 мин)
|
||||
→ «Сохранить прогресс» = регистрация
|
||||
→ Paywall с 14-дневным trial
|
||||
```
|
||||
|
||||
### Когда показывать paywall
|
||||
|
||||
**После первой полной сессии** — когда пользователь получил реальный инсайт.
|
||||
Тип: **Soft paywall с 3 бесплатными сессиями**, потом hard paywall.
|
||||
Trial: **14 дней** (конверсия 42.5% vs 25.5% у 3-дневного).
|
||||
Ключевое: paywall должен апеллировать к инсайту из первой сессии — не к абстрактным функциям.
|
||||
|
||||
### Топ-3 retention hook
|
||||
|
||||
**Hook #1: «AI помнит тебя»**
|
||||
На Day 2 показать, что приложение «думало» о тебе — отсылка к конкретному ответу из первой сессии. Это создаёт ощущение отношений, а не инструмента.
|
||||
|
||||
**Hook #2: «Твоя неделя в рефлексии» (email)**
|
||||
Еженедельный email с личным срезом: темы, паттерны, что изменилось в твоих ответах. Это уникальная ценность, которую нельзя получить без накопленных сессий — мотивирует продолжать.
|
||||
|
||||
**Hook #3: Push-напоминание в выбранное пользователем время**
|
||||
Запрашивать permission в post-purchase экране с формулировкой: «Напомним тебе, когда придёт время для следующей сессии». Пользователь сам выбирает время — это ownership, не спам.
|
||||
|
||||
---
|
||||
|
||||
## Источники и данные
|
||||
|
||||
- RevenueCat *State of Subscription Apps 2026* — данные по 115,000+ приложениям, $16B+ выручки
|
||||
- Phiture / Anastasia Karpikhina — *How to Optimize Free Trial Length* (Nov 2025)
|
||||
- RevenueCat / Daphne Tideman — *Post-purchase Screen Optimization* (May 2026)
|
||||
- RevenueCat / Peter Meinertzhagen — *Hard Paywall vs Soft Paywall* (Sep 2023)
|
||||
- RevenueCat / David Barnard — *How to Know If Your Free Tier Is Generous Enough* (May 2026)
|
||||
- Appcues — *26 User Onboarding Examples Worth Stealing in 2026*
|
||||
- UserOnboard.com — *How Duolingo Onboards New Users*
|
||||
|
||||
---
|
||||
|
||||
*Документ создан автоматически исследовательским агентом. Обновить при запуске A/B тестов.*
|
||||
@@ -0,0 +1,590 @@
|
||||
# Privacy & Legal Compliance: AI-приложение психологической рефлексии
|
||||
> Исследование подготовлено: май 2026
|
||||
> Контекст: indie-разработчик в Бишкеке (KG), пользователи RU/KZ/KG (потом EN/EU)
|
||||
> Backend: Claude API (Anthropic) | Платформы: iOS App Store + Google Play
|
||||
|
||||
---
|
||||
|
||||
## СОДЕРЖАНИЕ
|
||||
|
||||
1. [GDPR Article 9 — Special Category Data для mental health](#1-gdpr-article-9)
|
||||
2. [Apple App Store — Privacy Nutrition Labels](#2-apple-app-store)
|
||||
3. [Российский закон 152-ФЗ](#3-российский-закон-152-фз)
|
||||
4. [Политика Anthropic по данным API](#4-anthropic-api-политика)
|
||||
5. [Минимальный compliance для indie-разработчика](#5-минимальный-compliance)
|
||||
6. [Анализ Privacy Policy конкурентов](#6-конкуренты)
|
||||
7. [Финальный чеклист](#7-финальный-чеклист)
|
||||
|
||||
---
|
||||
|
||||
## 1. GDPR Article 9
|
||||
|
||||
### 1.1 Что считается "special category data" в mental health AI чат-боте
|
||||
|
||||
По GDPR Article 9(1), обработка данных особой категории **по умолчанию запрещена** без явного основания. В контексте психологического рефлексивного приложения к special category data относятся:
|
||||
|
||||
| Тип данных | Почему это special category |
|
||||
|---|---|
|
||||
| Психическое состояние пользователя | Health data — прямо указана в Art. 9 |
|
||||
| Симптомы тревоги, депрессии | Health data — психологические диагнозы |
|
||||
| Описание эмоций и переживаний | Косвенно выявляемые health данные |
|
||||
| Упоминания о терапии или лечении | Health data |
|
||||
| Суицидальные мысли / самоповреждение | Health data + safety-critical |
|
||||
| Религиозные/философские взгляды | Прямо в Art. 9 (если пользователь упоминает) |
|
||||
| Данные о сексуальной ориентации | Прямо в Art. 9 (если пользователь упоминает) |
|
||||
|
||||
> **Ключевой принцип:** Даже если приложение не запрашивает диагнозы напрямую, любой текст о психологическом состоянии, настроении, переживаниях — это потенциально health data. AI чат-бот о психологической рефлексии **по самой своей природе** обрабатывает special category data.
|
||||
|
||||
**Дополнительный риск — AI инференс:** Если из переписки можно *вывести* состояние здоровья (например, паттерн разговоров предполагает депрессию), это тоже считается обработкой health data. GDPR защищает не только явно предоставленные данные, но и инференс.
|
||||
|
||||
**Источники:**
|
||||
- GDPR Article 9 (EUR-Lex)
|
||||
- ICO Guide to Special Category Data: https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/lawful-basis/a-guide-to-lawful-basis/special-category-data/
|
||||
- GDPR Advisor Mental Health Apps: https://www.gdpr-advisor.com/gdpr-compliance-for-mental-health-apps-safeguarding-sensitive-data/
|
||||
- MannSetu Complete Guide 2026: https://www.mannsetu.com/gdpr-mental-health-ai
|
||||
|
||||
---
|
||||
|
||||
### 1.2 Явное согласие — требования и образец формулировки
|
||||
|
||||
**Требования к согласию по GDPR Art. 7 + Art. 9(2)(a):**
|
||||
|
||||
- ✅ **Freely given** — нельзя отказать в доступе к приложению, если пользователь не согласен на *необязательные* цели (например, AI-обучение)
|
||||
- ✅ **Specific** — отдельное согласие на каждую цель (предоставление сервиса / улучшение модели / аналитика)
|
||||
- ✅ **Informed** — пользователь должен понимать, что, как и зачем обрабатывается
|
||||
- ✅ **Unambiguous** — только активное действие (чекбокс, кнопка). Никаких pre-checked boxes
|
||||
- ✅ **Withdrawable** — отзыв должен быть таким же простым, как согласие
|
||||
|
||||
**Образец текста согласия для онбординга:**
|
||||
|
||||
```
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
🔒 Перед началом — важно знать
|
||||
|
||||
Это приложение для психологической рефлексии.
|
||||
В ходе использования вы можете делиться личными
|
||||
переживаниями, эмоциями и мыслями.
|
||||
|
||||
ЧТО МЫ ОБРАБАТЫВАЕМ:
|
||||
• Текст ваших сообщений (для формирования ответов AI)
|
||||
• Дата и время сессий
|
||||
• Технические данные устройства (для работы приложения)
|
||||
|
||||
ГДЕ ХРАНЯТСЯ ДАННЫЕ:
|
||||
Запросы обрабатываются через Anthropic API (США).
|
||||
С Anthropic заключено Data Processing Agreement.
|
||||
Anthropic не использует ваши данные для обучения моделей
|
||||
(согласно их условиям использования API).
|
||||
|
||||
КАК ДОЛГО:
|
||||
Переписка сессий хранится [X дней / до удаления аккаунта].
|
||||
Вы можете удалить все данные в любой момент.
|
||||
|
||||
ВАШИ ПРАВА:
|
||||
Доступ к данным / исправление / удаление / экспорт —
|
||||
в разделе Настройки → Мои данные.
|
||||
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
☑ Я понимаю, что это приложение обрабатывает мои
|
||||
психологические данные, и даю явное согласие
|
||||
на обработку в соответствии с Privacy Policy.
|
||||
|
||||
[Принять и продолжить] [Отказаться]
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
|
||||
> **Важно для GDPR:** Если пользователь из ЕС нажмёт "Отказаться" — нельзя просто показать ошибку. Нужно либо предложить работу без персонализации, либо честно сказать, что приложение не может функционировать без этого и закрыть онбординг. Нельзя принуждать.
|
||||
|
||||
---
|
||||
|
||||
### 1.3 Лимиты хранения данных
|
||||
|
||||
**GDPR Storage Limitation Principle (Art. 5(1)(e)):** данные хранятся не дольше, чем необходимо для цели.
|
||||
|
||||
**Мировые практики для mental health приложений:**
|
||||
|
||||
| Подход | Срок | Применяется в |
|
||||
|---|---|---|
|
||||
| Удаление сессии после просмотра | Немедленно | Paranoid режим, максимальная приватность |
|
||||
| Скользящее окно | 30–90 дней | Большинство рефлексивных приложений |
|
||||
| До удаления аккаунта | Переменно | Стандарт для персонализации |
|
||||
| Архив 1–3 года | Долгосрочно | Медицинские приложения с клинической ценностью |
|
||||
|
||||
**Рекомендация для indie-разработчика:**
|
||||
- **Сессионные логи:** хранить 90 дней (достаточно для контекста), потом автоудаление
|
||||
- **Агрегированная статистика** (без текста): до 1 года
|
||||
- **После удаления аккаунта:** 30 дней grace period для возможного восстановления, затем полное уничтожение
|
||||
- **Бэкапы:** данные удалённых аккаунтов должны вычищаться из бэкапов в разумный срок (рекомендация: 30–90 дней после удаления аккаунта)
|
||||
|
||||
**Важный нюанс с Anthropic:** Anthropic не хранит данные API-запросов для обучения (по Commercial Terms). Но технически промпты всё равно проходят через их инфраструктуру. Срок технического хранения на стороне Anthropic — согласно их DPA (см. раздел 4).
|
||||
|
||||
---
|
||||
|
||||
### 1.4 Право на удаление — технические требования
|
||||
|
||||
Когда пользователь нажимает "Удалить аккаунт", должно происходить:
|
||||
|
||||
**Немедленно (в течение 24–72 часов):**
|
||||
```
|
||||
1. Деактивация аккаунта (логин невозможен)
|
||||
2. Удаление из основной БД:
|
||||
- профиль пользователя
|
||||
- все сессии и переписки
|
||||
- настройки и предпочтения
|
||||
3. Отправка подтверждения на email
|
||||
```
|
||||
|
||||
**В течение 30 дней:**
|
||||
```
|
||||
4. Удаление из резервных копий (или пометка для вычистки)
|
||||
5. Удаление из аналитических систем (если хранилась персонально)
|
||||
6. Уведомление субпроцессоров (Anthropic уже не хранит — по условиям API)
|
||||
```
|
||||
|
||||
**Что нужно зафиксировать в документации:**
|
||||
- Retention schedule (когда что удаляется)
|
||||
- Процедура обработки запросов на удаление
|
||||
- Лог факта удаления (без личных данных — только user_id + timestamp удаления)
|
||||
|
||||
**Технический чеклист для разработчика:**
|
||||
- [ ] Soft delete + scheduled hard delete через 30 дней
|
||||
- [ ] Бэкапы: либо exclude deleted users, либо цикл вычистки раз в 30–90 дней
|
||||
- [ ] Логи: не хранить контент сообщений в системных логах (только метаданные)
|
||||
- [ ] Если используется Supabase/Firebase: настроить правила удаления в storage
|
||||
|
||||
---
|
||||
|
||||
### 1.5 Data Processing Agreement с Anthropic
|
||||
|
||||
**Нужен ли DPA?** Да, если вы обрабатываете данные пользователей из ЕС или UK через Anthropic API.
|
||||
|
||||
**Хорошая новость:** Anthropic уже предоставляет готовый DPA в рамках Commercial Terms.
|
||||
|
||||
**Как получить:**
|
||||
1. Зарегистрируйтесь на https://console.anthropic.com
|
||||
2. Commercial Terms (https://www.anthropic.com/legal/commercial-terms) содержат ссылку на DPA
|
||||
3. DPA автоматически включается при использовании API
|
||||
|
||||
**Ключевые гарантии Anthropic по DPA:**
|
||||
- **Anthropic = Processor** (не Controller) — вы остаётесь Controller
|
||||
- **Запрет на использование данных для обучения** — "Anthropic may NOT train models on Customer Content"
|
||||
- **Запрет на продажу данных** — никакого "sell or share"
|
||||
- **AES-256** шифрование at rest, **TLS 1.2+** in transit
|
||||
- **MFA** на всех системах с данными клиентов
|
||||
- **SCCs включены** — для передачи данных из ЕС в США
|
||||
|
||||
**Источники:**
|
||||
- Anthropic Commercial Terms: https://www.anthropic.com/legal/commercial-terms
|
||||
- Anthropic DPA: https://www.anthropic.com/legal/data-processing-addendum
|
||||
|
||||
---
|
||||
|
||||
### 1.6 DPIA — когда требуется
|
||||
|
||||
**Data Protection Impact Assessment ОБЯЗАТЕЛЕН для mental health AI** по GDPR Art. 35, потому что:
|
||||
- Обработка special category data в масштабе
|
||||
- Автоматизированная обработка с потенциально значимыми последствиями
|
||||
- Новая технология (AI/ML)
|
||||
- Систематический мониторинг пользователей
|
||||
|
||||
**Минимальный DPIA для indie:**
|
||||
```markdown
|
||||
## DPIA — [Название приложения]
|
||||
|
||||
**Цель обработки:** Психологическая рефлексия через AI-диалог
|
||||
**Правовое основание:** Art. 6(1)(b) + Art. 9(2)(a) GDPR
|
||||
|
||||
**Данные:** Текст переписки, эмоциональные состояния (health data)
|
||||
**Субъекты:** Конечные пользователи (взрослые)
|
||||
**Срок хранения:** 90 дней
|
||||
|
||||
**Риски:**
|
||||
- Несанкционированный доступ → шифрование AES-256, MFA
|
||||
- Передача третьим лицам → DPA с Anthropic, SCCs
|
||||
- Превышение срока хранения → автоудаление по расписанию
|
||||
|
||||
**Меры защиты:**
|
||||
- Минимизация данных (не собираем лишнего)
|
||||
- Pseudonymization при возможности
|
||||
- Регулярный аудит доступа
|
||||
|
||||
**Остаточный риск:** Низкий/Средний
|
||||
**Консультация с надзорным органом:** Не требуется (остаточный риск низкий)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2. Apple App Store
|
||||
|
||||
### 2.1 Privacy Nutrition Labels — конкретные требования
|
||||
|
||||
Apple требует задекларировать данные по трём уровням:
|
||||
1. **Linked to You** — данные, привязанные к вашей личности
|
||||
2. **Used to Track You** — для рекламного отслеживания
|
||||
3. **Not Linked to You** — анонимные/диагностические данные
|
||||
|
||||
**Для mental health приложения с Anthropic API нужно указать:**
|
||||
|
||||
| Категория Apple | Что указывать | Linked/Not Linked |
|
||||
|---|---|---|
|
||||
| **User Content → Other User Content** | Текст сообщений в AI-чате | Linked to You |
|
||||
| **Identifiers → User ID** | ID аккаунта | Linked to You |
|
||||
| **Contact Info → Email** | Email регистрации | Linked to You |
|
||||
| **Usage Data → Product Interaction** | Факты запуска, длительность сессий | Linked to You |
|
||||
| **Diagnostics → Crash Data** | Крэш-репорты | Not Linked to You |
|
||||
| **Health & Fitness → Health** | Если пользователь вводит health-данные | Linked to You |
|
||||
|
||||
**Использует ли Anthropic API пользовательские данные для трекинга?** По коммерческим условиям — **нет**. Anthropic = Processor, не продаёт данные. В Privacy Label можно НЕ отмечать "Used for Tracking".
|
||||
|
||||
**Нужно ли указывать Anthropic как third-party?** По правилам Apple — да, нужно декларировать все стороны, которые получают данные. Поскольку промпты передаются в Anthropic API, это технически "data sharing with third party". Но поскольку Anthropic не использует данные для своих целей (только для исполнения вашего запроса, согласно DPA), это можно классифицировать как "Service Provider", а не advertising/tracking.
|
||||
|
||||
### 2.2 Rejection Cases
|
||||
|
||||
Apple отклоняет приложения если:
|
||||
- Privacy Label не соответствует реальным практикам (при review Apple может проверить трафик)
|
||||
- Заявлено меньше категорий данных, чем реально собирается
|
||||
- Нет Privacy Policy URL в метаданных приложения
|
||||
- Privacy Policy не покрывает все заявленные в Label данные
|
||||
|
||||
**Особый риск для mental health:** Apple выделяет категорию "Health & Fitness" и может запросить дополнительное обоснование, если приложение собирает health-related data но не указывает это явно.
|
||||
|
||||
**Источники:**
|
||||
- Apple App Privacy Details: https://developer.apple.com/app-store/app-privacy-details/
|
||||
|
||||
---
|
||||
|
||||
## 3. Российский закон 152-ФЗ
|
||||
|
||||
### 3.1 Применяется ли к разработчику в KG?
|
||||
|
||||
**Ответ: Да, 152-ФЗ применяется экстерриториально.**
|
||||
|
||||
Согласно ст. 1 и ст. 18.1 ФЗ-152 "О персональных данных":
|
||||
- Закон применяется к **операторам персональных данных**, обрабатывающим данные **граждан РФ**
|
||||
- Место нахождения оператора (Кыргызстан) **не освобождает** от обязанностей
|
||||
- Ключевой критерий: **данные граждан РФ обрабатываются** → закон применяется
|
||||
|
||||
**Аналогия с GDPR:** Это та же логика, что и у GDPR — экстерриториальное действие на основе данных граждан.
|
||||
|
||||
### 3.2 Требование локализации данных (ст. 18 ФЗ-152)
|
||||
|
||||
**Требование:** при первичном сборе персональных данных граждан РФ оператор обязан обеспечить **запись, систематизацию, накопление, хранение, уточнение, извлечение** таких данных с использованием баз данных, **физически расположенных на территории РФ**.
|
||||
|
||||
**Что это значит практически:**
|
||||
- Нужен российский сервер (или VPS в РФ) как минимум для "первичного сбора"
|
||||
- Данные могут затем дублироваться за рубеж, но первичная запись — в РФ
|
||||
- Требование действует с 2015 года, за нарушение — Роскомнадзор ведёт реестр нарушителей
|
||||
|
||||
**Практика для малого indie-разработчика:**
|
||||
|
||||
В реальности:
|
||||
- Малые indie-приложения **практически не проверяются** Роскомнадзором
|
||||
- РКН фокусируется на крупных игроках (LinkedIn, Meta были заблокированы)
|
||||
- Большинство небольших иностранных приложений работают без локализации
|
||||
- Технически полная локализация при использовании Anthropic API **невозможна** — Anthropic не имеет серверов в РФ
|
||||
|
||||
**Варианты стратегий:**
|
||||
|
||||
| Стратегия | Описание | Риск |
|
||||
|---|---|---|
|
||||
| Игнорировать (не рекомендуется) | Работать без локализации | Теоретически высокий, практически низкий для indie |
|
||||
| Частичная локализация | Хранить профили + метаданные на российском VPS | Снижает риск |
|
||||
| Ограничить пользователей РФ | Не таргетировать РФ явно, нет русскоязычного маркетинга | Снимает обязательства |
|
||||
| Проконсультироваться с юристом | Получить письменный анализ рисков | Рекомендуется перед масштабированием |
|
||||
|
||||
### 3.3 Штрафы и риски для физлица-разработчика
|
||||
|
||||
По актуальным изменениям 2023–2024 (КоАП РФ ст. 13.11):
|
||||
|
||||
| Нарушение | Штраф для физлица | Штраф для юрлица |
|
||||
|---|---|---|
|
||||
| Необеспечение локализации (ст. 18) | 6 000 — 18 000 руб. | 1 000 000 — 18 000 000 руб. |
|
||||
| Утечка данных (до 1000 чел.) | 200 000 — 400 000 руб. | 3 000 000 — 5 000 000 руб. |
|
||||
| Утечка с отягчающими обстоятельствами | До 800 000 руб. | До 15 000 000 руб. |
|
||||
|
||||
> **Вывод для indie-разработчика:** Прямой риск — заблокирование приложения в российских сторах и штраф. Для физлица из KG принудительное исполнение штрафа крайне затруднено. Но блокировка в App Store по запросу РКН — вполне реальна (прецеденты есть).
|
||||
|
||||
**Рекомендация:** На старте (RU/KZ/KG аудитория) — минимально: добавить в Privacy Policy упоминание об обработке данных в соответствии с 152-ФЗ, указать email для запросов. Перед активным маркетингом в РФ — консультация с российским юристом по ПД.
|
||||
|
||||
---
|
||||
|
||||
## 4. Anthropic API Политика
|
||||
|
||||
### 4.1 Обучает ли Anthropic модели на данных API?
|
||||
|
||||
**По состоянию на 2025–2026 год:**
|
||||
|
||||
**ДЛЯ API-РАЗРАБОТЧИКОВ (Commercial Terms):**
|
||||
> ❌ **Anthropic НЕ обучает модели на данных клиентов API**
|
||||
>
|
||||
> Прямая цитата из Commercial Terms: *"Anthropic may NOT train models on Customer Content"*
|
||||
|
||||
Это принципиальное отличие от пользователей Claude.ai (consumer):
|
||||
- Пользователи Claude.ai (free/pro/max) — с сентября 2025 данные могут использоваться для обучения (opt-in система, можно отключить)
|
||||
- Разработчики через API — данные не используются для обучения по умолчанию, это прямо запрещено в Commercial Terms
|
||||
|
||||
**Обновления политики (хронология):**
|
||||
- **Декабрь 2024:** Опубликован отдельный "Notice on Model Training", разъясняющий различие для API vs consumer
|
||||
- **Сентябрь 2025:** Consumer пользователи переведены на opt-in систему обучения (5-летнее хранение если включено)
|
||||
- **Январь 2026:** Добавлен Consumer Health Data Privacy Policy для пользователей с health app интеграциями
|
||||
|
||||
### 4.2 Retention данных Anthropic при API использовании
|
||||
|
||||
По DPA Anthropic:
|
||||
- Промпты и ответы обрабатываются для предоставления услуги
|
||||
- Конкретный срок технического хранения в DPA не указывается публично (зависит от операционных нужд)
|
||||
- По запросу возможно заключение дополнительного соглашения о более строгих условиях
|
||||
|
||||
**Источники:**
|
||||
- Anthropic Commercial Terms: https://www.anthropic.com/legal/commercial-terms
|
||||
- Anthropic DPA: https://www.anthropic.com/legal/data-processing-addendum
|
||||
- Privacy Policy Updates: https://privacy.anthropic.com/en/articles/10301952-updates-to-our-privacy-policy
|
||||
|
||||
### 4.3 Как правильно описать Anthropic в вашей Privacy Policy
|
||||
|
||||
```
|
||||
ОБРАБОТЧИКИ ДАННЫХ (Sub-processors)
|
||||
|
||||
Anthropic, PBC (США) — языковая модель Claude API
|
||||
• Назначение: генерация AI-ответов в сессиях рефлексии
|
||||
• Передаваемые данные: текст ваших сообщений
|
||||
• Основание для передачи: Data Processing Agreement + Standard Contractual Clauses
|
||||
• Гарантии: Anthropic не использует данные для обучения моделей
|
||||
• Политика Anthropic: https://www.anthropic.com/legal/privacy
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Минимальный Compliance для Indie-разработчика
|
||||
|
||||
### 5.1 Что ОБЯЗАТЕЛЬНО перед публикацией
|
||||
|
||||
**App Store (iOS):**
|
||||
- [ ] Privacy Policy URL — обязательное поле в App Store Connect
|
||||
- [ ] Privacy Nutrition Label — заполнить все собираемые типы данных
|
||||
- [ ] Если собираете health data — декларировать явно
|
||||
|
||||
**Google Play:**
|
||||
- [ ] Data Safety Form — аналог Apple Nutrition Label
|
||||
- [ ] Privacy Policy URL в листинге
|
||||
- [ ] Если используется sensitive permissions — обоснование
|
||||
|
||||
**Минимальные документы:**
|
||||
- [ ] Privacy Policy (на языке пользователей — русский + английский)
|
||||
- [ ] Terms of Service / User Agreement
|
||||
- [ ] Экран получения согласия при онбординге (consent screen)
|
||||
|
||||
### 5.2 Инструменты для генерации Privacy Policy
|
||||
|
||||
| Инструмент | Стоимость | Плюсы | Минусы |
|
||||
|---|---|---|---|
|
||||
| **iubenda** | От $27/год | Покрывает GDPR, CCPA, генерирует on-the-fly, интеграции для CMP | Не покрывает RU 152-ФЗ явно, нужно добавлять вручную |
|
||||
| **Termly** | Бесплатно / от $10/мес | Простой интерфейс, бесплатный базовый тариф, Data Safety Form для Android | Базовые шаблоны менее детальные |
|
||||
| **Privacypolicies.com** | Бесплатно / от $29/год | Бесплатный базовый, понятный вопросник | Ограниченная кастомизация |
|
||||
| **Написать вручную** | Только время | Полный контроль, нет vendor lock-in | Требует знания законодательства |
|
||||
|
||||
**Рекомендация для mental health приложения:**
|
||||
|
||||
**iubenda** — лучший выбор для GDPR-совместимости. Имеет специальные шаблоны для health data и special category. При подписке ~$27/год получаете:
|
||||
- Автообновляемую PP при изменении законодательства
|
||||
- Cookie consent manager
|
||||
- Поддержку GDPR Art. 9 (special category)
|
||||
|
||||
**Важно:** Для охвата 152-ФЗ необходимо добавить раздел вручную или через кастомный клауз в iubenda.
|
||||
|
||||
### 5.3 Ключевые разделы Privacy Policy для mental health приложения
|
||||
|
||||
**1. Введение и идентификация оператора**
|
||||
```
|
||||
Оператор персональных данных: [Ваше имя/ИП/компания]
|
||||
Адрес: [адрес]
|
||||
Email: privacy@[yourapp].com
|
||||
```
|
||||
|
||||
**2. Категории обрабатываемых данных**
|
||||
```
|
||||
Мы обрабатываем следующие категории данных:
|
||||
|
||||
ДАННЫЕ ОСОБОЙ КАТЕГОРИИ (Art. 9 GDPR):
|
||||
• Психологические состояния и переживания, которые вы описываете
|
||||
в ходе сессий рефлексии
|
||||
|
||||
ОБЫЧНЫЕ ПЕРСОНАЛЬНЫЕ ДАННЫЕ:
|
||||
• Адрес электронной почты (регистрация)
|
||||
• Технические данные устройства (ID, ОС, версия приложения)
|
||||
• Метаданные сессий (дата/время, длительность)
|
||||
```
|
||||
|
||||
**3. Правовые основания**
|
||||
```
|
||||
• Art. 6(1)(b) — исполнение договора (предоставление сервиса)
|
||||
• Art. 9(2)(a) — явное согласие на обработку health data
|
||||
• Art. 6(1)(f) — законный интерес (безопасность, предотвращение мошенничества)
|
||||
```
|
||||
|
||||
**4. Субпроцессоры и передача данных**
|
||||
```
|
||||
Anthropic, PBC (США) — AI модель Claude
|
||||
Основание: Data Processing Agreement, Standard Contractual Clauses
|
||||
```
|
||||
|
||||
**5. Сроки хранения**
|
||||
```
|
||||
• Содержание сессий: 90 дней с момента создания
|
||||
• Профиль пользователя: до удаления аккаунта
|
||||
• После удаления аккаунта: полное уничтожение в течение 30 дней
|
||||
• Бэкапы: очистка в течение 90 дней
|
||||
```
|
||||
|
||||
**6. Права пользователей**
|
||||
```
|
||||
• Доступ к данным (ответ в течение 30 дней)
|
||||
• Исправление неточностей
|
||||
• Удаление (право на забвение)
|
||||
• Экспорт данных (portability)
|
||||
• Отзыв согласия (без обратной силы)
|
||||
|
||||
Запросы: privacy@[yourapp].com
|
||||
```
|
||||
|
||||
**7. Безопасность**
|
||||
```
|
||||
• Шифрование данных при передаче (TLS 1.3)
|
||||
• Шифрование данных при хранении (AES-256)
|
||||
• Ограниченный доступ сотрудников
|
||||
• Уведомление о нарушениях в течение 72 часов
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Конкуренты
|
||||
|
||||
### 6.1 Woebot Privacy Policy — ключевые пункты
|
||||
|
||||
**Источник:** https://woebot.io/privacy-policy (Effective August 31, 2022)
|
||||
|
||||
**5 публичных обязательств Woebot:**
|
||||
1. Переписка — приватна, третьим лицам не передаётся
|
||||
2. Данные рекламодателям — никогда ("Never have, never will")
|
||||
3. Вы контролируете свои данные — доступ, исправление, удаление
|
||||
4. Данные собираются с конкретной целью (симптомы → персонализация)
|
||||
5. Прозрачность: кто видит данные и почему
|
||||
|
||||
**Что они делают хорошо:**
|
||||
- Явно перечисляют 12 прав пользователей
|
||||
- Отдельный раздел о "concerning language" (self-harm) и как это обрабатывается
|
||||
- HIPAA compliance (для US market)
|
||||
- Переписки НЕ передаются клиническим партнёрам без явного согласия
|
||||
|
||||
**Лазейки / слабые места:**
|
||||
- Retention "as long as needed" — нет конкретных сроков (размытая формулировка)
|
||||
- Analytics через Google Analytics (с opt-out)
|
||||
- При M&A сделках все данные могут перейти покупателю
|
||||
|
||||
**Чему следовать:** Конкретные, человеческие обязательства в начале документа ("5 core commitments") + детальный список прав.
|
||||
|
||||
---
|
||||
|
||||
### 6.2 Wysa Privacy Policy — ключевые пункты
|
||||
|
||||
Wysa (AI mental wellness app, UK/India) — политика недоступна для прямого просмотра, но из публичных источников известно:
|
||||
|
||||
**Задекларированные принципы Wysa:**
|
||||
- Не продают данные третьим лицам
|
||||
- Анонимизация перед любым исследовательским использованием
|
||||
- Отдельное согласие на клинические программы
|
||||
- Локальное хранение части данных (UK сервера для UK-пользователей)
|
||||
|
||||
**Что отличает от конкурентов:**
|
||||
- Явный акцент на crisis detection и протоколах безопасности
|
||||
- NHS Digital assessment (UK) — прошли проверку по DSP Toolkit
|
||||
- Сертификация ISO 27001
|
||||
|
||||
**Что стоит заимствовать:**
|
||||
- Crisis protocol описан в Privacy Policy — как обрабатываются ситуации риска для жизни
|
||||
- Явное указание на независимую сертификацию безопасности
|
||||
- Разделение данных по типу (клинические vs обычные пользователи)
|
||||
|
||||
---
|
||||
|
||||
### 6.3 Сводные выводы из анализа конкурентов
|
||||
|
||||
| Практика | Woebot | Wysa | Рекомендация для вашего приложения |
|
||||
|---|---|---|---|
|
||||
| Никогда не продавать данные | ✅ Явно | ✅ Явно | ✅ Добавить как commitment #1 |
|
||||
| Конкретные сроки хранения | ❌ Размыто | ❌ Размыто | ✅ Указать конкретно (90 дней) |
|
||||
| Crisis protocol | ✅ Есть | ✅ Детально | ✅ Обязательно добавить |
|
||||
| Список субпроцессоров | Частично | Частично | ✅ Указать Anthropic явно |
|
||||
| Права пользователей | ✅ 12 прав | ✅ Есть | ✅ Минимум 7 прав GDPR |
|
||||
| Независимый аудит | ✅ HIPAA | ✅ ISO 27001 | 🔄 Цель на будущее |
|
||||
|
||||
---
|
||||
|
||||
## 7. Финальный чеклист
|
||||
|
||||
### 🚀 ДО ПУБЛИКАЦИИ (обязательно)
|
||||
|
||||
**Документация:**
|
||||
- [ ] Privacy Policy на русском и английском
|
||||
- [ ] Terms of Service / Пользовательское соглашение
|
||||
- [ ] Экран онбординга с получением явного согласия
|
||||
- [ ] Раздел "Мои данные" в настройках приложения (запрос/удаление)
|
||||
|
||||
**Технические меры:**
|
||||
- [ ] HTTPS на всех endpoint'ах (TLS 1.2+)
|
||||
- [ ] Шифрование БД at rest
|
||||
- [ ] Soft delete + scheduled hard delete (через 30 дней)
|
||||
- [ ] Механизм полного удаления аккаунта (кнопка в приложении)
|
||||
- [ ] Email для запросов приватности (privacy@yourapp.com)
|
||||
|
||||
**Anthropic:**
|
||||
- [ ] Использовать Commercial API (не consumer Claude.ai) — это автоматически даёт DPA
|
||||
- [ ] Принять Commercial Terms (включают DPA)
|
||||
- [ ] Упомянуть Anthropic как субпроцессор в Privacy Policy
|
||||
|
||||
**App Store:**
|
||||
- [ ] Заполнить Privacy Nutrition Label в App Store Connect
|
||||
- [ ] Добавить URL Privacy Policy в метаданные
|
||||
- [ ] Указать User Content → Other User Content (тексты чата) как Linked to You
|
||||
|
||||
**Google Play:**
|
||||
- [ ] Заполнить Data Safety Form
|
||||
- [ ] Добавить URL Privacy Policy
|
||||
|
||||
### ⚠️ ПОСЛЕ ПУБЛИКАЦИИ (в течение 3–6 месяцев)
|
||||
|
||||
- [ ] Базовый DPIA документ (можно простой, как в разделе 1.6)
|
||||
- [ ] Процедура обработки запросов субъектов данных
|
||||
- [ ] Retention policy автоудаления (cron job)
|
||||
- [ ] Мониторинг изменений в политике Anthropic
|
||||
|
||||
### 📋 ДЛЯ РОСТА (при выходе на EU рынок)
|
||||
|
||||
- [ ] Полноценная DPIA
|
||||
- [ ] Назначение Data Protection Officer (или консультанта)
|
||||
- [ ] Cookie consent banner (если веб-версия)
|
||||
- [ ] Формальная регистрация в реестре операторов (некоторые EU страны)
|
||||
- [ ] Рассмотреть EU-hosted инфраструктуру для EU пользователей
|
||||
|
||||
---
|
||||
|
||||
## Ключевые ссылки
|
||||
|
||||
| Ресурс | URL |
|
||||
|---|---|
|
||||
| GDPR полный текст | https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679 |
|
||||
| ICO Special Category Guide | https://ico.org.uk/for-organisations/uk-gdpr-guidance-and-resources/lawful-basis/a-guide-to-lawful-basis/special-category-data/ |
|
||||
| Anthropic Commercial Terms | https://www.anthropic.com/legal/commercial-terms |
|
||||
| Anthropic DPA | https://www.anthropic.com/legal/data-processing-addendum |
|
||||
| Anthropic Privacy Policy | https://www.anthropic.com/legal/privacy |
|
||||
| Anthropic Subprocessors | https://www.anthropic.com/subprocessors |
|
||||
| Apple App Privacy Details | https://developer.apple.com/app-store/app-privacy-details/ |
|
||||
| Woebot Privacy Policy | https://woebot.io/privacy-policy |
|
||||
| iubenda | https://www.iubenda.com |
|
||||
| Termly | https://termly.io |
|
||||
|
||||
---
|
||||
|
||||
*Документ подготовлен как исследовательская сводка. Не является юридической консультацией. Для юридически значимых решений рекомендуется привлечь квалифицированного юриста по защите данных.*
|
||||
|
||||
*Последнее обновление данных: май 2026*
|
||||
@@ -0,0 +1,615 @@
|
||||
# Skip.tools: Оценка зрелости для AI-приложения с анимированным персонажем и голосом
|
||||
|
||||
> **Дата исследования:** 16 мая 2026
|
||||
> **Версия Skip:** 1.8.14 (актуальная)
|
||||
> **Контекст:** AI-приложение рефлексии на SwiftUI с анимированным blob/orb персонажем (Rive) и голосовым вводом/выводом (OpenAI Realtime API или Whisper+TTS)
|
||||
|
||||
---
|
||||
|
||||
## Вердикт TL;DR
|
||||
|
||||
> **⚠️ УСЛОВНО ГОТОВ — с существенными оговорками**
|
||||
>
|
||||
> Skip в 2026 году — это уже не эксперимент. Фреймворк активен, свободен, компилирует настоящий Jetpack Compose. Но для нашего конкретного кейса есть два критических барьера: **Rive не поддерживается официально** и требует платформо-специфичного workaround, а **WebSocket был сломан** до Skip 1.8/Swift 6.3 (сейчас починен). Рекомендация: **iOS-first MVP + Skip на неделю PoC**, принять решение по результатам.
|
||||
|
||||
---
|
||||
|
||||
## 1. Текущий статус Skip.tools (2025–2026)
|
||||
|
||||
### Жив ли проект?
|
||||
|
||||
**Однозначно да.** Метрики по состоянию на май 2026:
|
||||
|
||||
| Метрика | Значение |
|
||||
|---------|---------|
|
||||
| GitHub Stars | ~3,000 ⭐ |
|
||||
| Forks | 101 |
|
||||
| Последний релиз | v1.8.14 (8 мая 2026) |
|
||||
| Лицензия | MPL-2.0 (полностью open source с v1.7) |
|
||||
| Язык | Swift 100% |
|
||||
| Режимы работы | Skip Fuse (нативный) / Skip Lite (транспайл) |
|
||||
|
||||
Важный поворот: в **феврале 2025** Skip стал соучредителем [Swift on Android Working Group](https://forums.swift.org/t/swift-on-android-working-group/77780), а **Swift 6.3** официально шипнул Swift SDK для Android. Skip 1.8 использует этот официальный SDK — больше нет зависимости от кастомного форка.
|
||||
|
||||
### Два режима: что выбрать?
|
||||
|
||||
| | **Skip Fuse** (нативный) | **Skip Lite** (транспайл) |
|
||||
|---|---|---|
|
||||
| Механизм | Swift компилируется нативно для Android | Swift → Kotlin (исходный код) |
|
||||
| Плюсы | Полный Swift, все сторонние пакеты, детерминированная память | Прямой доступ к Kotlin/Java API, читаемый Kotlin-вывод, меньший размер |
|
||||
| Минусы | +60 МБ к APK, медленная сборка | Не весь Swift транслируется, меньше пакетов |
|
||||
| Рекомендация для нас | ✅ **Лучший выбор** — полный Swift, rich animations | — |
|
||||
|
||||
### Что поддерживается из SwiftUI?
|
||||
|
||||
Уровень покрытия (из официальной матрицы):
|
||||
|
||||
**Полная поддержка (✅):**
|
||||
- `@State`, `@Binding`, `@Environment`, `@EnvironmentObject`, `@ObservedObject`, `@StateObject`, `@AppStorage`
|
||||
- `AsyncImage`, `Button`, `HStack`, `VStack`, `ZStack`, `ScrollView`, `List`, `Form`
|
||||
- `LinearGradient`, `RadialGradient`, `Circle`, `Rectangle`, `RoundedRectangle`, `Capsule`
|
||||
- `NavigationStack`, `TabView`, `Sheet`, `Alert`
|
||||
- `Text`, `TextField`, `SecureField`, `Toggle`, `Slider`, `Picker`
|
||||
- `withAnimation` (есть известный баг — см. ниже)
|
||||
|
||||
**Частичная поддержка / проблемы:**
|
||||
- `Canvas` — **статус неясен** (не упоминается в матрице явно, вероятно не поддерживается)
|
||||
- `TimelineView` — аналогично, не подтверждён
|
||||
- `@GestureState` — только Skip Fuse
|
||||
- `AppStorage` с optional values — не работает
|
||||
|
||||
**Известные баги (актуальные issues):**
|
||||
|
||||
| Issue | Проблема | Дата |
|
||||
|-------|----------|------|
|
||||
| [#402](https://github.com/skiptools/skip-ui/issues/402) | `withAnimation()` утекает в глобальное состояние на Android | Апр 2026 |
|
||||
| [#687](https://github.com/skiptools/skip/issues/687) | State не обновляется под NavigationLink (Fuse) | Май 2026 |
|
||||
| [#376](https://github.com/skiptools/skip-ui/issues/376) | NavigationLink throttling (задержка навигации) | Мар 2026 |
|
||||
| [#339](https://github.com/skiptools/skip-ui/issues/339) | `.frame(maxWidth:)` игнорирует границы родителя | Фев 2026 |
|
||||
| [#331](https://github.com/skiptools/skip-ui/issues/331) | Text с `%` и Markdown рендерится неправильно | Фев 2026 |
|
||||
|
||||
> **Критически важно для нас:** баг с `withAnimation()` (#402) напрямую влияет на анимированный персонаж.
|
||||
|
||||
### Приложения в production
|
||||
|
||||
Официально подтверждённые:
|
||||
- **Skip Showcase** — каталог SwiftUI компонентов, опубликован в App Store и Google Play
|
||||
- **Skip Bookings** — тревел-букинг с картами (пример)
|
||||
- **Skip Weather** — погода с async networking
|
||||
- В v2.3.6 Showcase добавили целую игру Block Blast на ~1000 строк чистого Swift
|
||||
|
||||
> Третьесторонних production-приложений в публичном доступе не найдено — Skip пока используется преимущественно инди-разработчиками.
|
||||
|
||||
---
|
||||
|
||||
## 2. Rive + Skip: совместимость
|
||||
|
||||
### Официальная поддержка
|
||||
|
||||
**❌ Нет официального пакета `skip-rive`.** Список официальных Skip-модулей:
|
||||
|
||||
```
|
||||
skip-motion (Lottie), skip-av (AVFoundation), skip-firebase, skip-revenue (RevenueCat)...
|
||||
```
|
||||
|
||||
Rive в нём отсутствует.
|
||||
|
||||
### Как Rive работает на iOS
|
||||
|
||||
Rive iOS runtime (`rive-app/rive-ios`, 780 ⭐, v6.20.3, MIT License) использует:
|
||||
- **Objective-C++ (~32% кода)** для C++ рантайма Rive
|
||||
- Интеграция в SwiftUI через `RiveViewModel` + `RiveView`
|
||||
|
||||
```swift
|
||||
// Типичный код на iOS
|
||||
import RiveRuntime
|
||||
|
||||
struct CharacterView: View {
|
||||
@StateObject var riveVM = RiveViewModel(fileName: "blob_character")
|
||||
|
||||
var body: some View {
|
||||
riveVM.view()
|
||||
.frame(width: 300, height: 300)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Проблема для Skip:** Rive iOS package содержит нативный C++ runtime и Objective-C++ bindings. Skip **не может транспилировать Objective-C++ код** — это за пределами его возможностей.
|
||||
|
||||
### Workaround: Platform-specific через ComposeView
|
||||
|
||||
Skip предоставляет мощный механизм для именно такого случая:
|
||||
|
||||
```swift
|
||||
struct CharacterView: View {
|
||||
let characterState: CharacterState
|
||||
|
||||
var body: some View {
|
||||
#if os(Android)
|
||||
// Android: используем Rive Android SDK через Compose
|
||||
ComposeView { RiveAndroidComposer(state: characterState) }
|
||||
#else
|
||||
// iOS: нативный RiveRuntime
|
||||
RiveNativeView(state: characterState)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
// iOS-only код (полный Swift, без ограничений)
|
||||
#if !SKIP
|
||||
import RiveRuntime
|
||||
|
||||
struct RiveNativeView: View {
|
||||
let state: CharacterState
|
||||
@StateObject var riveVM = RiveViewModel(fileName: "blob_character")
|
||||
|
||||
var body: some View {
|
||||
riveVM.view()
|
||||
.onAppear { riveVM.triggerInput("setState", value: state.rawValue) }
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// Android Kotlin через #if SKIP блок
|
||||
#if SKIP
|
||||
import app.rive.runtime.kotlin.compose.RiveAnimation
|
||||
|
||||
struct RiveAndroidComposer: ContentComposer {
|
||||
let state: CharacterState
|
||||
|
||||
@Composable func Compose(context: ComposeContext) {
|
||||
RiveAnimation(
|
||||
resId = R.raw.blob_character,
|
||||
modifier = context.modifier,
|
||||
stateMachineName = "State Machine",
|
||||
onInit = { controller in
|
||||
controller.setBooleanState("State Machine", "isListening", state == .listening)
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
```
|
||||
|
||||
**Оценка workaround:**
|
||||
- ✅ Технически реализуемо
|
||||
- ✅ iOS остаётся чистым нативным RiveRuntime
|
||||
- ⚠️ Нужно поддерживать две реализации
|
||||
- ⚠️ Требует добавить зависимость `rive-android` в Gradle вручную через `skip.yml`
|
||||
- ⏱️ Оценка трудозатрат: 2-3 дня дополнительно
|
||||
|
||||
### Lottie как альтернатива Rive
|
||||
|
||||
**`skip-motion` (официальный пакет)** — Lottie поддерживается!
|
||||
|
||||
```swift
|
||||
import SkipMotion
|
||||
|
||||
struct CharacterView: View {
|
||||
var body: some View {
|
||||
MotionView(lottie: lottieAnimationData)
|
||||
.frame(width: 300, height: 300)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
| Параметр | Статус |
|
||||
|----------|--------|
|
||||
| Версия | v0.7.2 (Jan 2026) |
|
||||
| iOS backend | lottie-ios v4.6.0 |
|
||||
| Android backend | lottie-android v6.7.1 |
|
||||
| Размер | +~1 МБ к ipa/apk |
|
||||
| Управление воспроизведением | ⚠️ Раннее состояние, ограниченные контролы |
|
||||
| State machine | ❌ Нет (в отличие от Rive) |
|
||||
|
||||
**Ключевое ограничение Lottie:** у него нет **State Machine** как у Rive. Для персонажа с динамическими состояниями (listening, thinking, speaking) это критично — нужно либо делать несколько анимаций, либо переключать между файлами. В Rive это нативно.
|
||||
|
||||
### SwiftUI-native анимированный персонаж (без Rive/Lottie)
|
||||
|
||||
Возможный подход: написать blob/orb через SwiftUI shapes + `withAnimation`:
|
||||
|
||||
```swift
|
||||
struct BlobCharacterView: View {
|
||||
@State private var animationPhase: Double = 0
|
||||
|
||||
var body: some View {
|
||||
TimelineView(.animation) { timeline in
|
||||
Canvas { context, size in
|
||||
// Custom blob morphing via Bezier paths
|
||||
let path = blobPath(for: timeline.date.timeIntervalSince1970)
|
||||
context.fill(path, with: .color(.purple.opacity(0.8)))
|
||||
}
|
||||
}
|
||||
.frame(width: 200, height: 200)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Проблема:** `Canvas` и `TimelineView` — **не подтверждены** в матрице совместимости Skip. Вероятно, не поддерживаются на Android (не найдены в списке поддерживаемых Views). Плюс баг `withAnimation()` (#402).
|
||||
|
||||
> **Вывод по анимации:** Rive через workaround — самый мощный вариант, но требует дополнительных усилий. Lottie безопаснее для Skip, но функционально беднее. Pure SwiftUI blob — рискованно из-за Canvas/TimelineView.
|
||||
|
||||
---
|
||||
|
||||
## 3. Голосовая интеграция + Skip
|
||||
|
||||
### skip-av: статус AVFoundation
|
||||
|
||||
Официальный пакет `skip-av` (v0.7.1, 15 мая 2026, 12 ⭐):
|
||||
|
||||
| API | Android-поддержка | Что работает |
|
||||
|-----|-------------------|--------------|
|
||||
| `AVAudioRecorder` | 🟢 **High** | `record()`, `stop()`, `pause()`, `isRecording`, `peakPower`, `averagePower` |
|
||||
| `AVAudioPlayer` | 🟢 **High** | `play()`, `pause()`, `stop()`, `volume`, `rate`, `duration` |
|
||||
| `AVPlayer` | 🟠 Low | Только базовый init/play/pause |
|
||||
| `VideoPlayer` | 🟡 Medium | `init(player:)` |
|
||||
|
||||
**Бэкенд на Android:** `MediaRecorder` + `MediaPlayer` (не ExoPlayer для записи).
|
||||
|
||||
```swift
|
||||
// Запись голоса — работает на обеих платформах через skip-av
|
||||
let settings: [String: Any] = [
|
||||
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
|
||||
AVSampleRateKey: 16000,
|
||||
AVNumberOfChannelsKey: 1,
|
||||
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
|
||||
]
|
||||
|
||||
// Platform-specific путь к файлу
|
||||
let recordingURL: URL = {
|
||||
#if SKIP
|
||||
let context = ProcessInfo.processInfo.androidContext
|
||||
let file = java.io.File(context.filesDir, "voice_input.m4a")
|
||||
return URL(fileURLWithPath: file.absolutePath)
|
||||
#else
|
||||
return FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)
|
||||
.first!.appendingPathComponent("voice_input.m4a")
|
||||
#endif
|
||||
}()
|
||||
|
||||
audioRecorder = try AVAudioRecorder(url: recordingURL, settings: settings)
|
||||
audioRecorder?.record()
|
||||
```
|
||||
|
||||
Нужно добавить в AndroidManifest.xml:
|
||||
```xml
|
||||
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||
```
|
||||
|
||||
### WebSocket для OpenAI Realtime API
|
||||
|
||||
**История баг-фикса:**
|
||||
|
||||
| Событие | Дата |
|
||||
|---------|------|
|
||||
| Проблема #559 открыта: libcurl без WebSocket | Дек 2025 |
|
||||
| Фикс смерджен в swift-docker | 23 Дек 2025 |
|
||||
| Swift 6.3 официально релизнут с WebSocket | Мар 2026 |
|
||||
| Skip 1.8 обновлён на официальный Swift 6.3 SDK | Май 2026 |
|
||||
|
||||
**Текущий статус (Skip 1.8.14):** WebSocket **должен работать** — Skip 1.8 использует Swift 6.3, где проблема решена. Но статус issue #559 остаётся "Open" — рекомендуется проверить в PoC.
|
||||
|
||||
```bash
|
||||
# Проверить активный SDK
|
||||
skip android sdk list
|
||||
# Должен показать swift-6.3-..._android
|
||||
|
||||
skip android build --version
|
||||
```
|
||||
|
||||
**Альтернативный подход (более безопасный):** Whisper + TTS вместо Realtime API
|
||||
|
||||
```swift
|
||||
// Более Skip-friendly архитектура:
|
||||
// 1. Запись голоса → AVAudioRecorder (skip-av)
|
||||
// 2. Отправка файла на Whisper API → URLSession (HTTP POST, не WebSocket)
|
||||
// 3. Ответ через GPT-4 → URLSession
|
||||
// 4. TTS → URLSession, воспроизведение → AVAudioPlayer (skip-av)
|
||||
```
|
||||
|
||||
HTTP через URLSession **полностью поддерживается** Skip — нет никаких проблем. Whisper+TTS архитектура безопаснее для MVP.
|
||||
|
||||
### WebRTC (skip-livekit)
|
||||
|
||||
Интересно: в официальных модулях есть `skip-livekit` — WebRTC через LiveKit. Но для OpenAI Realtime API WebRTC нужен другой конкретный эфемерный ключ, не LiveKit. Это не подходит напрямую.
|
||||
|
||||
### Механизм platform-specific кода
|
||||
|
||||
Skip предоставляет три директивы препроцессора:
|
||||
|
||||
```swift
|
||||
// Код только для Android (в Fuse: нативный Swift; в Lite: транспилируется)
|
||||
#if os(Android)
|
||||
// ...
|
||||
#endif
|
||||
|
||||
// Код транспилируется в Kotlin (можно вызывать Kotlin/Java API напрямую)
|
||||
#if SKIP
|
||||
import android.content.pm.PackageManager
|
||||
let hasPermission = context.checkSelfPermission(
|
||||
android.Manifest.permission.RECORD_AUDIO
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
#endif
|
||||
|
||||
// Только iOS
|
||||
#if !os(Android)
|
||||
import AVFoundation
|
||||
AVAudioSession.sharedInstance().requestRecordPermission { granted in ... }
|
||||
#endif
|
||||
```
|
||||
|
||||
**Это мощный escape hatch** — любая iOS-only функциональность доступна без ограничений в `#if !SKIP` блоках.
|
||||
|
||||
---
|
||||
|
||||
## 4. Альтернативы если Skip не готов
|
||||
|
||||
### iOS-first MVP без Android
|
||||
|
||||
**Плюсы:**
|
||||
- ✅ Нет компромиссов — полный RiveRuntime, полный AVFoundation, WebRTC
|
||||
- ✅ iOS = 5× выше ARPU ($140 vs $69 в год на пользователя)
|
||||
- ✅ Скорость разработки — нет overhead на кросс-платформу
|
||||
- ✅ App Store первичен для платных подписок
|
||||
|
||||
**Минусы:**
|
||||
- ❌ Упускаем ~3.7B Android пользователей
|
||||
- ❌ Если позже добавлять Android — переписывать
|
||||
|
||||
**Коммерческая оценка:** Для подписочного приложения iOS-first — **стандартная практика**. Большинство AI-приложений (Calm, Headspace, Replika) стартовали с iOS. Android добавляли позже.
|
||||
|
||||
### React Native 2025
|
||||
|
||||
| Критерий | Оценка |
|
||||
|----------|--------|
|
||||
| Голос (микрофон, TTS) | ✅ expo-av, хорошая поддержка |
|
||||
| Rive анимация | ✅ `rive-react-native` — официальный runtime! |
|
||||
| OpenAI Realtime API | ✅ нет проблем с WebSocket |
|
||||
| Подписки | ✅ react-native-purchases (RevenueCat) |
|
||||
| Производительность анимаций | ⚠️ JS bridge может давать jank |
|
||||
| Язык для iOS-разработчика | ❌ TypeScript/JS — новый стек |
|
||||
| New Architecture migration | ⚠️ Legacy arch заморожена с июня 2025 |
|
||||
|
||||
**Итог:** Функционально React Native покрывает все наши нужды. Но требует знания JS/TS экосистемы. Rive Runtime для React Native — официальный и зрелый.
|
||||
|
||||
### Flutter 2025
|
||||
|
||||
| Критерий | Оценка |
|
||||
|----------|--------|
|
||||
| Голос | ✅ `flutter_sound`, `speech_to_text` |
|
||||
| Rive анимация | ✅ официальный `rive` пакет на pub.dev |
|
||||
| OpenAI Realtime API | ✅ WebSocket нативный |
|
||||
| Подписки | ✅ `purchases_flutter` (RevenueCat) |
|
||||
| Производительность | ⚠️ +40 МБ overhead, GC паузы |
|
||||
| iOS 26 "Liquid Glass" UI | ❌ Flutter команда **отказалась** адаптировать Cupertino widgets |
|
||||
| Язык | ❌ Dart — новый стек |
|
||||
|
||||
**Критическое замечание:** GitHub issues flutter #170310 — Flutter команда подтвердила, что не будет имплементировать новый Apple '26 UI дизайн в Cupertino библиотеке в ближайшее время. Для AI-приложения это может не критично, но iOS UI выглядит устаревшим.
|
||||
|
||||
### Kotlin Multiplatform + Compose Multiplatform
|
||||
|
||||
| Критерий | Оценка |
|
||||
|----------|--------|
|
||||
| UI фреймворк | Compose Multiplatform (нативный Android, mimicked iOS) |
|
||||
| Rive | ✅ `Rive-CMP` (community, v0.4.0, 105 ⭐) |
|
||||
| Голос | ✅ kotlin-native доступ к platform APIs |
|
||||
| Для Swift-разработчика | ❌ Нужен Kotlin — совсем новый стек |
|
||||
| iOS UI | ⚠️ Не SwiftUI — кастомный рендеринг Skia |
|
||||
|
||||
Для Swift-разработчика KMP — самый далёкий вариант. Хотя технически сильный.
|
||||
|
||||
### Capacitor/Ionic
|
||||
|
||||
**Не рекомендуется** для нашего кейса. WebView-рендеринг, анимации через CSS/JS будут уступать нативным, особенно для персонажа и голоса.
|
||||
|
||||
---
|
||||
|
||||
## 5. Конкретный план PoC на 1 неделю
|
||||
|
||||
### Цель PoC
|
||||
|
||||
Ответить на три вопроса:
|
||||
1. Работает ли WebSocket / Whisper API через Skip на Android?
|
||||
2. Реализуем ли анимированный персонаж (Lottie или Rive workaround)?
|
||||
3. Работает ли запись голоса через skip-av?
|
||||
|
||||
### День 1: Базовый проект
|
||||
|
||||
```bash
|
||||
brew tap skiptools/skip && brew install skip
|
||||
skip checkup
|
||||
|
||||
# Создаём проект в режиме Fuse
|
||||
skip android sdk install # убедиться что 6.3+
|
||||
skip init --fuse-app --appid=com.yourapp.reflection reflection-app ReflectionApp
|
||||
|
||||
# Проверяем SDK версию
|
||||
skip android sdk list
|
||||
```
|
||||
|
||||
**Критерий успеха:** Базовое SwiftUI приложение запускается параллельно на iOS Simulator и Android Emulator.
|
||||
|
||||
### День 2-3: Голос + сеть
|
||||
|
||||
```swift
|
||||
// Тест 1: Запись через AVAudioRecorder
|
||||
// Тест 2: HTTP POST на Whisper API (URLSession)
|
||||
// Тест 3: WebSocket соединение (если нужен Realtime API)
|
||||
```
|
||||
|
||||
```swift
|
||||
// Проверка WebSocket
|
||||
import Foundation
|
||||
|
||||
class WebSocketTest: ObservableObject {
|
||||
var task: URLSessionWebSocketTask?
|
||||
|
||||
func test() {
|
||||
let url = URL(string: "wss://echo.websocket.org")!
|
||||
task = URLSession.shared.webSocketTask(with: url)
|
||||
task?.resume()
|
||||
task?.send(.string("Hello")) { error in
|
||||
print(error == nil ? "✅ WebSocket работает!" : "❌ \(error!)")
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Критерий успеха:** Запись работает на Android, HTTP к OpenAI проходит, WebSocket не выдаёт ошибку libcurl.
|
||||
|
||||
### День 4-5: Анимированный персонаж
|
||||
|
||||
**Вариант A (рекомендуется для PoC): Lottie через skip-motion**
|
||||
|
||||
```swift
|
||||
// Package.swift: добавить skip-motion
|
||||
.package(url: "https://source.skip.dev/skip-motion.git", "0.0.0"..<"2.0.0")
|
||||
```
|
||||
|
||||
```swift
|
||||
import SkipMotion
|
||||
|
||||
struct CharacterView: View {
|
||||
var isListening: Bool
|
||||
|
||||
var body: some View {
|
||||
MotionView(lottie: isListening ? listeningAnimation : idleAnimation)
|
||||
.frame(width: 250, height: 250)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Вариант B (для Rive):** Реализовать RiveCharacterView с #if SKIP/iOS разделением (как показано выше). Добавить rive-android в `skip.yml`:
|
||||
|
||||
```yaml
|
||||
# Android/app/src/main/skip.yml
|
||||
dependencies:
|
||||
- app.rive:rive-android:9.12.0
|
||||
```
|
||||
|
||||
**Критерий успеха:** Персонаж анимируется на обеих платформах, состояния переключаются.
|
||||
|
||||
### День 6-7: Интеграция и оценка
|
||||
|
||||
- Собрать мини end-to-end: нажал кнопку → запись → Whisper → ответ → TTS → воспроизведение → персонаж реагирует
|
||||
- Замерить производительность анимации на Android (fps)
|
||||
- Оценить размер APK
|
||||
|
||||
### Критерии успеха/провала PoC
|
||||
|
||||
| Критерий | Success | Fail |
|
||||
|----------|---------|------|
|
||||
| Голосовая запись | Работает на Android API 28+ | Крэшит или нет звука |
|
||||
| HTTP к OpenAI | Запросы проходят | SSL/network ошибки |
|
||||
| WebSocket | Соединение устанавливается | libcurl ошибка |
|
||||
| Анимация (Lottie) | Плавная, состояния переключаются | Дёргается, не отображается |
|
||||
| Rive workaround (опц.) | Загружается .riv файл | Compile error, не интегрируется |
|
||||
| Общая стабильность | Нет крэшей при 10-мин сессии | Крэши, ANR на Android |
|
||||
|
||||
### Fallback план если PoC провалился
|
||||
|
||||
**Уровень 1 (мягкий фейл — одна проблема):**
|
||||
- WebSocket не работает → используем Whisper+TTS по HTTP
|
||||
- Rive не интегрируется → используем Lottie или SwiftUI анимации
|
||||
- Lottie не устраивает → делаем чистую iOS-версию с Rive, Android откладываем
|
||||
|
||||
**Уровень 2 (полный фейл Skip):**
|
||||
Переходим на **iOS-first MVP** (натив SwiftUI):
|
||||
- 4-6 недель до первой версии
|
||||
- Полный Rive, полный AVFoundation, OpenAI Realtime API
|
||||
- Android: через 3-6 месяцев либо через React Native (Rive официально поддерживается), либо через Skip если к тому времени созреет
|
||||
|
||||
---
|
||||
|
||||
## 6. Итоговая рекомендация
|
||||
|
||||
### Рекомендованная стратегия: "Skip с Lottie + Whisper-first"
|
||||
|
||||
```
|
||||
Неделя 1-2: PoC на Skip (план выше)
|
||||
Неделя 3-6: MVP на Skip если PoC ✅
|
||||
↓ если PoC ❌
|
||||
iOS-first MVP (нативный SwiftUI + Rive)
|
||||
```
|
||||
|
||||
**Рекомендованный стек для MVP на Skip:**
|
||||
|
||||
| Компонент | Решение |
|
||||
|-----------|---------|
|
||||
| UI фреймворк | SwiftUI + Skip Fuse |
|
||||
| Анимация персонажа | **Lottie через skip-motion** (безопасно) или Rive с platform-specific workaround |
|
||||
| Голосовой ввод | AVAudioRecorder через **skip-av** |
|
||||
| STT | **Whisper API по HTTP** (не WebSocket) — максимально безопасно |
|
||||
| TTS | OpenAI TTS API по HTTP + AVAudioPlayer |
|
||||
| AI диалог | GPT-4o через HTTP/URLSession |
|
||||
| Подписки | **skip-revenue** (RevenueCat официально поддержан) |
|
||||
| Аналитика | **skip-posthog** (официально) |
|
||||
| Auth | **skip-firebase** (Firebase Auth) |
|
||||
|
||||
**Почему Whisper+TTS вместо Realtime API:**
|
||||
- WebSocket технически починен в Skip 1.8 (Swift 6.3), но нужно верифицировать в PoC
|
||||
- Whisper+TTS архитектура — надёжнее и дешевле для рефлексии (нет потоковой передачи)
|
||||
- Можно добавить Realtime API позже как premium-фичу
|
||||
|
||||
**Почему Lottie вместо Rive:**
|
||||
- Официальный skip-motion пакет, нет platform-specific кода
|
||||
- Для MVP не нужна полная State Machine Rive
|
||||
- Rive можно добавить после MVP когда сделаете полноценный workaround
|
||||
|
||||
### Ограничения и риски при использовании Skip
|
||||
|
||||
| Риск | Уровень | Митигация |
|
||||
|------|---------|-----------|
|
||||
| Баг `withAnimation()` (#402) утечка в глобальное состояние | 🔴 Высокий | Тестировать в PoC, использовать `.animation()` modifier вместо `withAnimation` |
|
||||
| Canvas/TimelineView не поддерживаются | 🔴 Высокий | Использовать Lottie/Rive, не делать чистый SwiftUI blob |
|
||||
| WebSocket не верифицирован в production | 🟡 Средний | Whisper+TTS как план A |
|
||||
| Rive workaround требует два кодабейса | 🟡 Средний | Lottie для MVP, Rive потом |
|
||||
| +60 МБ к размеру APK (Skip Fuse) | 🟢 Низкий | Приемлемо для B2C приложения |
|
||||
| Мало примеров third-party production apps | 🟡 Средний | Активное сообщество, официальные примеры |
|
||||
|
||||
### Если НЕ использовать Skip прямо сейчас
|
||||
|
||||
**Лучшая альтернатива для этого конкретного кейса:**
|
||||
|
||||
1. **iOS MVP (нативный SwiftUI)** — 4-6 недель, полный Rive, AVFoundation, Realtime API
|
||||
2. **Android через 6+ месяцев:**
|
||||
- Re-evaluate Skip (к тому времени Canvas поддержка появится)
|
||||
- Или React Native (Rive official runtime, mature ecosystem)
|
||||
|
||||
**Не рекомендуется:**
|
||||
- Flutter — из-за iOS 26 UI regression и неопределённости команды
|
||||
- Ionic/Capacitor — для анимированного персонажа и голоса WebView недостаточен
|
||||
|
||||
---
|
||||
|
||||
## Приложения: Ссылки и источники
|
||||
|
||||
### Skip официальная документация
|
||||
- [skip.tools/docs](https://skip.tools/docs) — главная документация
|
||||
- [skip.tools/docs/modules/skip-ui/](https://skip.tools/docs/modules/skip-ui/) — матрица совместимости SwiftUI
|
||||
- [skip.tools/docs/modules/skip-av/](https://skip.tools/docs/modules/skip-av/) — AVFoundation поддержка
|
||||
- [skip.tools/docs/platformcustomization/](https://skip.tools/docs/platformcustomization/) — #if SKIP механизм
|
||||
- [skip.tools/compare/](https://skip.tools/compare/) — сравнение с Flutter/React Native
|
||||
|
||||
### GitHub Issues (ключевые)
|
||||
- [#559](https://github.com/skiptools/skip/issues/559) — WebSocket не работал в libcurl (починен в 6.3)
|
||||
- [#402](https://github.com/skiptools/skip-ui/issues/402) — withAnimation() глобальный state баг
|
||||
- [#687](https://github.com/skiptools/skip/issues/687) — NavigationLink state bug (Fuse)
|
||||
|
||||
### Skip-пакеты для нашего кейса
|
||||
- [skip-motion](https://github.com/skiptools/skip-motion) — Lottie анимации
|
||||
- [skip-av](https://github.com/skiptools/skip-av) — AVFoundation / аудио
|
||||
- [skip-revenue](https://github.com/skiptools/skip-revenue) — RevenueCat подписки
|
||||
- [skip-firebase](https://github.com/skiptools/skip-firebase) — Firebase Auth/Firestore
|
||||
|
||||
### Rive
|
||||
- [rive-app/rive-ios](https://github.com/rive-app/rive-ios) — iOS runtime (v6.20.3, 780 ⭐)
|
||||
- [rive-app/rive-android](https://github.com/rive-app/rive-android) — Android runtime (Compose API beta)
|
||||
- [Rive-CMP](https://github.com/muazkadan/Rive-CMP) — Community Compose Multiplatform wrapper
|
||||
|
||||
### OpenAI Realtime API
|
||||
- [swift-realtime-openai](https://github.com/m1guelpf/swift-realtime-openai) — Swift SDK (431 ⭐, поддержка WebRTC+WebSocket)
|
||||
|
||||
---
|
||||
|
||||
*Документ создан: 16 мая 2026. Актуален для Skip v1.8.14 и Swift 6.3.*
|
||||
+1
-1
@@ -9,7 +9,7 @@ updated: '2026-05-15'
|
||||
# Wiki Index
|
||||
|
||||
Auto-maintained catalog of all pages in `wiki/`. Updated by the daily curation cron.
|
||||
> Last updated: 2026-05-17 | Total pages: 15
|
||||
> Last updated: 2026-05-16 | Total pages: 16
|
||||
|
||||
## Core Architecture
|
||||
|
||||
|
||||
+10
-6
@@ -58,13 +58,17 @@ Activity log for the daily Eagle wiki-curation cron job.
|
||||
- **Index:** Bumped last updated to 2026-05-17; page count unchanged at 15
|
||||
- **New pages created:** none
|
||||
|
||||
## 2026-05-16
|
||||
|
||||
- **Conflict scan:** No git conflict markers found across all ~/obsidian/ ✅
|
||||
- **Previous run (2026-05-17):** Status = complete, no Unfinished section — nothing to resume
|
||||
- **Change detection:** Multiple Russian-named root .md files in commit history (family/personal wishlists), family/how-to/mesh-networks.md added (operational knowledge, not wiki-scope); work/wiki/ and work/briefs/ changes skipped (operational)
|
||||
- **Vault root triage:** 1 file processed — `Hermes calendar access.md` → moved to `personal/projects/personal-os/hermes-calendar-access.md` (idea: add Google Calendar OAuth scope to Hermes). Committed.
|
||||
- **New wiki page discovered:** `user-profile.md` — existed but not in index. Fixed frontmatter (added namespace, last_synced, confidence). Added to index.md under new "User Profile" section.
|
||||
- **Index:** Bumped total pages to 16, updated last_updated to 2026-05-16
|
||||
- **Lint:** 16 pages scanned; frontmatter: all OK ✅; orphans: none ✅; broken wikilinks in wiki pages: none ✅; user-profile.md has vault wikilinks to personal/family docs (non-wiki) — expected, not errors; page sizes: all under 200 lines ✅
|
||||
- **Architecture check:** `personal-os-architecture.md` current — no updates needed; Mattermost migration notice and Kraken image routing issue still open
|
||||
- **Inbox:** `raw/inbox/` empty ✅
|
||||
- **Vault root triage:** No .md files in ~/obsidian/ root ✅
|
||||
- **Stale content fix:** `family/how-to/openmediavault-rpi5.md` — Step 13 (llm-wiki) TODO items marked complete (active since 2026-05-13); table formatting corrected
|
||||
- **Architecture check:** `personal-os-architecture.md` is current — no updates needed
|
||||
- **Lint:** 15 pages, all frontmatter ✅, all wikilinks ✅, no orphans ✅, no broken links ✅, no pages over 200 lines ✅
|
||||
- **Index:** bumped last updated to 2026-05-16; page count unchanged at 15
|
||||
- **New pages created:** none
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user