[2026-05-18] business coaching: сессия 1 W20 — лендинг до 20.05, страх публичности как реальный блок
This commit is contained in:
@@ -95,8 +95,8 @@ related:
|
||||
| Цель | Шкала | Комментарий |
|
||||
|------|-------|-------------|
|
||||
| Первый платящий клиент | 1/10 | Нет ни одного |
|
||||
| Понимание что делать следующим | 2/10 | Есть фреймворк its_capitan, нет конкретного плана |
|
||||
| Маркетинг AI-психолога | 1/10 | Заморожен, есть стратегия на бумаге |
|
||||
| Понимание что делать следующим | 4/10 | Есть план до Алматы, конкретное действие на среду |
|
||||
| Маркетинг AI-психолога | 2/10 | Лендинг запланирован на 20.05 |
|
||||
| Использование DDG-данных | 1/10 | Никогда не применял |
|
||||
|
||||
---
|
||||
@@ -116,3 +116,4 @@ related:
|
||||
| Дата | Тема | Ключевые инсайты |
|
||||
|------|------|-----------------|
|
||||
| 2026-05-18 | Вводная | Паттерн «контейнер» в бизнес-контексте; DDG-поисковик как конкурентное преимущество; цель — break-even на первом проекте |
|
||||
| 2026-05-18 | Сессия 1 — AI-психолог | Маркетинг уходит в postpone в реальном времени; реальный блок — страх публичности, не отсутствие навыка; договорённость: лендинг + пост в X до среды 20.05 |
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
---
|
||||
created: '2026-05-18'
|
||||
updated: '2026-05-18'
|
||||
tags:
|
||||
- business
|
||||
- coaching
|
||||
- sessions
|
||||
- w20-2026
|
||||
related:
|
||||
- '[[personal/business/profile]]'
|
||||
---
|
||||
# Бизнес-сессия — 2026, неделя 20
|
||||
|
||||
> Первая рабочая сессия. 2026-05-18. Формат: GROW + WOOP, внешний наблюдатель.
|
||||
|
||||
---
|
||||
|
||||
## OSKAR на входе
|
||||
|
||||
| Цель | Шкала (до) | Шкала (после) |
|
||||
|------|-----------|---------------|
|
||||
| Первый платящий клиент | 1/10 | 1/10 |
|
||||
| Понимание что делать следующим | 2/10 | 4/10 |
|
||||
| Маркетинг AI-психолога | 1/10 | 2/10 |
|
||||
| Использование DDG-данных | 1/10 | 1/10 |
|
||||
|
||||
---
|
||||
|
||||
## Контекст сессии
|
||||
|
||||
Запрос: «волшебный пендель» + понять стоит ли продолжать AI-психолога. Быстро выяснилось что решение уже принято — нужен не анализ, а движение.
|
||||
|
||||
---
|
||||
|
||||
## Ключевые наблюдения
|
||||
|
||||
### 1. Маркетинг уходит в postpone в реальном времени
|
||||
Человек описывает план действий и самостоятельно замечает как маркетинг перемещается в конец очереди. Добавляет: «мне от этого спокойнее». Механизм избегания описан в момент срабатывания.
|
||||
|
||||
### 2. Очередь перед маркетингом
|
||||
Сформирована цепочка: проверить приложение → TestFlight → друзья → фидбек → итерации → публичный маркетинг → платящий клиент. В цепочке отсутствует параллельность — всё последовательно, маркетинг в конце.
|
||||
|
||||
### 3. Реальный блок — не технический
|
||||
«Нет канала», «нет аудитории», «нет плана» — перечислены как препятствия. При давлении все оказались устранимы за один день. Реальный блок: «я не писатель и не продажник». При уточнении: умеет, но это «очень много работы» и страшно делать публично.
|
||||
|
||||
### 4. Формула «вот настрою — и заживу»
|
||||
DDG-проект как текущая отговорка. Человек сам называет это «ADHD профиль». После DDG следующая отговорка уже ждёт в очереди — это озвучено и принято.
|
||||
|
||||
### 5. ООО и Apple Dev — уточнение
|
||||
Получать деньги как физлицо из КР/РФ через App Store нельзя. ООО в Алматы (июнь) — необходимо для монетизации. TestFlight и Individual Developer аккаунт ($99) — можно без ООО, для беты.
|
||||
|
||||
---
|
||||
|
||||
## WOOP
|
||||
|
||||
| Шаг | Содержание |
|
||||
|-----|-----------|
|
||||
| Wish | Лендинг «private beta» + первый публичный пост |
|
||||
| Outcome | Люди знают что строится, можно собирать интерес до запуска |
|
||||
| Obstacle | «Я не писатель и не продажник» — страх публичности, не отсутствие навыка |
|
||||
| Plan (if-then) | Среда 2026-05-20: сделать лендинг + первый пост в X (старый аккаунт, обновить bio) |
|
||||
|
||||
---
|
||||
|
||||
## Договорённости
|
||||
|
||||
- [ ] **Среда 20.05** — лендинг «private beta / coming soon» + первый пост в X
|
||||
- [ ] Сегодня вечером — проверить приложение на себе (запланированная сессия)
|
||||
- [ ] До Алматы (июнь) — составить конкретный план действий по ООО + App Store Organization account
|
||||
- [ ] Зарегистрировать Apple Developer Individual ($99) — для TestFlight беты, без ООО
|
||||
|
||||
---
|
||||
|
||||
## Открытые вопросы
|
||||
|
||||
- Как «оживить» старый X аккаунт — стратегия первых постов (разобрать отдельно)
|
||||
- Нужен ли отдельный TG канал или стартовать с X
|
||||
- Параллельный маркетинг vs последовательный — пока выбран последовательный, это риск
|
||||
@@ -1,4 +1,11 @@
|
||||
# 🧠 Маркетинговая стратегия AI-приложения рефлексии
|
||||
|
||||
> **⚡ Обновление 2026-05-18 (коуч-сессия):**
|
||||
> Маркетинг запускается ПАРАЛЛЕЛЬНО с доработкой продукта — не после.
|
||||
> Первый шаг: лендинг «private beta / coming soon» + тизер-пост в X → **до 20.05 (среда)**.
|
||||
> X: старый аккаунт (@alexey martemianov) — обновить bio, не создавать новый.
|
||||
> ООО в Алматы (июнь) нужно для получения денег через App Store. TestFlight — без ООО, Individual Apple Dev $99.
|
||||
> Apple Developer Individual аккаунт регистрировать сейчас.
|
||||
**"Marketing First" — органический рост без платной рекламы**
|
||||
|
||||
> Исследование подготовлено автоматически | Май 2026
|
||||
|
||||
@@ -32,20 +32,41 @@ PGS и ASS (SSA) субтитры вызывают **burn-in** — Jellyfin ре
|
||||
|
||||
## Решение: конвертация PGS → SRT
|
||||
|
||||
Для всей библиотеки конвертировать PGS-субтитры в SRT через `pgsrip`:
|
||||
|
||||
Установка через uv (arm64/aarch64 совместимо):
|
||||
```bash
|
||||
# Установка
|
||||
pip install pgsrip
|
||||
|
||||
# Конвертация одного файла (MKV с PGS)
|
||||
pgsrip film.mkv --language rus
|
||||
|
||||
# Массовая конвертация
|
||||
find /media -name "*.mkv" | xargs -I{} pgsrip "{}" --language rus
|
||||
~/.local/bin/uv tool install pgsrip
|
||||
sudo apt-get install -y libgl1 libglib2.0-0 tesseract-ocr tesseract-ocr-rus tesseract-ocr-eng
|
||||
```
|
||||
|
||||
После конвертации: внешние `.srt` файлы Jellyfin читает без транскода.
|
||||
Скрипт конвертации:
|
||||
```
|
||||
/srv/dev-disk-by-uuid.../docker/media-pipeline/pgs-to-srt.sh
|
||||
```
|
||||
|
||||
```bash
|
||||
# один файл
|
||||
pgs-to-srt.sh /media/movies/Film.mkv
|
||||
|
||||
# вся директория
|
||||
pgs-to-srt.sh /media
|
||||
```
|
||||
|
||||
Логи: `/srv/.../docker/media-pipeline/pgs-to-srt.log`
|
||||
|
||||
Скрипт:
|
||||
- Скипает файлы без PGS-дорожек (S_HDMV)
|
||||
- Скипает если .srt уже есть рядом
|
||||
- Пишет лог с timestamp
|
||||
|
||||
После конвертации Jellyfin читает внешние `.srt` без транскода.
|
||||
|
||||
## Transmission completion hook
|
||||
|
||||
Хук `/config/on-download-complete.sh` (монтируется в контейнер `:ro`) после завершения загрузки:
|
||||
1. Запускает media-pipeline sync
|
||||
2. Запускает pgs-to-srt.sh для скачанного файла/директории
|
||||
|
||||
Лог: `/srv/.../docker/media-pipeline/download-complete.log`
|
||||
|
||||
## Итог по субтитрам
|
||||
|
||||
|
||||
@@ -217,7 +217,7 @@ All resolved on GitHub. Fixed in later commits on the `#4544` branch.
|
||||
|
||||
**Fix:** Removed `isChatPath` conditional from `NewTabDaxDialogFactory.createFinalDialog` — both factories now always use standard EOJ message + `daxDialogsEndOfJourneyNewTabUnique` pixel. Deleted test `testWhenChatPathEOJState_AndFinalDialogAppears_ThenFiresDuckAIExperimentFinalDialogPixel` (tested dead code); simplified remaining final-dialog tests.
|
||||
|
||||
**State:** ✅ Fixed in `alex/demo-tracker-blocking-onboarding` working tree (2026-05-18). Not yet committed.
|
||||
**State:** ✅ Fixed and committed (2026-05-18). GitHub thread resolved on GitHub.
|
||||
|
||||
---
|
||||
|
||||
@@ -229,7 +229,7 @@ All resolved on GitHub. Fixed in later commits on the `#4544` branch.
|
||||
|
||||
**Fix:** `if contextualOnboardingLogic.chatPathPhase == .trackerToEOJ { delegate?.tabDidRequestNewTab(self) }` in `didTapDismissContextualOnboardingAction` (`TabViewController.swift:4206`).
|
||||
|
||||
**State:** ✅ Fix in `alex/demo-tracker-blocking-onboarding` (landed via PR #4584 merge, 2026-05-18). GitHub thread on PR #4544 still open — needs resolving.
|
||||
**State:** ✅ Fix landed via PR #4584 merge. GitHub thread **resolved** on GitHub.
|
||||
|
||||
---
|
||||
|
||||
@@ -241,7 +241,19 @@ All resolved on GitHub. Fixed in later commits on the `#4544` branch.
|
||||
|
||||
**Fix:** Resolved by removing the dead branch from `NewTabDaxDialogFactory` (see r3234446893 entry above). Both factories now symmetric.
|
||||
|
||||
**State:** ✅ Fixed in `alex/demo-tracker-blocking-onboarding` working tree (2026-05-18). Not yet committed.
|
||||
**State:** ✅ Fixed and committed (2026-05-18). GitHub thread resolved on GitHub.
|
||||
|
||||
---
|
||||
|
||||
### ✅ PR #4544 — Bugbot (r3257196584): Chat-path subscription promo unreachable after EOJ dismissal
|
||||
|
||||
**Source:** [Bugbot r3257196584 on PR #4544](https://github.com/duckduckgo/apple-browsers/pull/4544#discussion_r3257196584), `NewTabPageViewController.swift:355-374` and `DaxDialogs.swift:407-419`.
|
||||
|
||||
**Issue:** In `finishDismissal` (inside `showDuckAIOnboardingCompletionDialog`), `nextHomeScreenMessageNew()` was called while `browsingFinalDialogShown` was still `false`. `peekNextHomeScreenMessageExperiment()` took the chat-path branch (not the `finalDaxDialogSeen` branch) and returned `nil`. The else branch then called `daxDialogsManager.dismiss()` which atomically set `browsingFinalDialogShown = true` and `isDismissed = true`, making `isEnabled = false`. Any subsequent call returned `nil` unconditionally — subscription promo was unreachable.
|
||||
|
||||
**Fix:** Call `setFinalOnboardingDialogSeen()` before `nextHomeScreenMessageNew()` in `finishDismissal`. Added `setFinalOnboardingDialogSeen()` to `NewTabDialogSpecProvider` protocol; added stub to `MockNewTabDialogSpecProvider`.
|
||||
|
||||
**State:** ✅ Fixed and committed (2026-05-18). GitHub thread still **open** — needs resolving.
|
||||
|
||||
---
|
||||
|
||||
@@ -389,23 +401,23 @@ All resolved on GitHub. Fixed in later commits on the `#4544` branch.
|
||||
|
||||
> Threads in GitHub order.
|
||||
|
||||
### 🔴 PR #4668 — Bugbot (OnboardingIntroViewModel.swift:473): Hardcoded debug `return`
|
||||
### ⭕ PR #4668 — Bugbot (OnboardingIntroViewModel.swift:473): Hardcoded debug `return`
|
||||
|
||||
**Source:** Bugbot on PR #4668, `OnboardingIntroViewModel.swift:473`
|
||||
|
||||
**Issue:** A hardcoded `return .treatmentB` debug shortcut bypasses the feature flag in `resolveDuckAIQueryExperimentCohortID()`. Must be removed before shipping.
|
||||
**Issue:** Hardcoded `return .treatmentA` bypasses feature flag in `resolveDuckAIQueryExperimentCohortID()`.
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. Same item appears on PR #4855 (Bugbot line 473). Not yet removed on #4668 branch.
|
||||
**State:** ⭕ Removed and pushed on #4668 branch. GitHub thread still open — needs resolving.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4668 — Bugbot (FeatureFlag.swift:635): Commented-out `Config(...)` line
|
||||
### ⭕ PR #4668 — Bugbot (FeatureFlag.swift:635): Commented-out `Config(...)` line
|
||||
|
||||
**Source:** Bugbot on PR #4668, `FeatureFlag.swift:635`
|
||||
|
||||
**Issue:** `defaultValue: .enabled` override was added to `unifiedToggleInput` for testing, plus the old `// Config(...)` line still sits underneath as dead commented-out code. Both need to be removed before merging.
|
||||
|
||||
**State:** 🔴 Still in code on the `#4668` branch. NOT fixed. GitHub thread NOT resolved.
|
||||
**State:** ⭕ TODO — still in code on `#4668` branch. Deferred until main PR (#4544) is done.
|
||||
|
||||
---
|
||||
|
||||
@@ -415,27 +427,27 @@ All resolved on GitHub. Fixed in later commits on the `#4544` branch.
|
||||
|
||||
**Issue:** Method added to `BrowserChromeDelegate` protocol and implemented, but no caller exists.
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. See also BrowserChromeManager item below — same root issue.
|
||||
**State:** 🔴 [OPEN] on GitHub. Deferred until #4544 is done — see BrowserChromeManager item below for full detail.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4668 — aataraxiaa (FeatureFlag.swift:635): Commented-out config line
|
||||
### ⭕ PR #4668 — aataraxiaa (FeatureFlag.swift:635): Commented-out config line
|
||||
|
||||
**Source:** [aataraxiaa review comment on PR #4668](https://github.com/duckduckgo/apple-browsers/pull/4668), `FeatureFlag.swift:635`
|
||||
|
||||
**Issue:** Same commented-out `Config(...)` dead code flagged by Bugbot above. aataraxiaa also requests it be removed.
|
||||
|
||||
**State:** 🔴 [OPEN] on GitHub. Not yet fixed.
|
||||
**State:** ⭕ TODO — GitHub thread [OPEN]. Deferred until #4544 is done.
|
||||
|
||||
---
|
||||
|
||||
### 🔴 PR #4668 — Bugbot (BrowserChromeManager.swift:43): New protocol method no callers
|
||||
### 🔴 PR #4668 — Bugbot (BrowserChromeManager.swift:43) `r3234513817`: New protocol method no callers
|
||||
|
||||
**Source:** Bugbot on PR #4668, `BrowserChromeManager.swift:43`
|
||||
|
||||
**Issue:** `embedInUnifiedInputEditingAreaIfActive` added to `BrowserChromeDelegate` protocol and implemented in `BrowserChromeManager`, but no caller exists anywhere in the codebase.
|
||||
**Issue:** `embedInUnifiedInputEditingAreaIfActive` added to `BrowserChromeDelegate` protocol and implemented, but no caller exists. The NTP's `embedDialogInEditingState` and `showDuckAIOnboardingCompletionDialogInUTI` both embed by casting `parent as? MainViewController` directly instead of going through this protocol method. Additionally the **implementations differ**: the protocol method pins to `navigationBarContainer.bottomAnchor`, while actual NTP embedding pins to `coordinator.viewController.view.bottomAnchor`. So simply adding a caller is not enough — implementations must be aligned first.
|
||||
|
||||
**State:** On `sr-feedback` branch commit `82bb0f71e3` removed `embedDialogInEditingState` dead code; the protocol method may now be entirely unreachable. **Needs verification on #4668 branch.** GitHub thread NOT resolved. → Either add a caller or remove the method and its implementation.
|
||||
**State:** 🔴 [OPEN] on GitHub. Deferred until #4544 is done. Fix = align implementations + wire caller, or remove the protocol method entirely.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user