# AGIL Calls — gap-анализ против конкурентов

> **Дата:** 13.11.2026. **Сборка стенда:** guardify `guardify-CrVA45s_.js`,
> shared `index-CVIcZIiz.js`, server `agil-calls-server 0.1.0`.
> **Вопрос заказчика:** «каких фич у нас ещё нет по сравнению с аналогами».
>
> **База:** [`docs/features.md`](./features.md) (матрица 80 фич),
> [`docs/reverse-engineering.md`](./reverse-engineering.md) (разбор вендоров, лицензий,
> API), [`docs/contract.md`](./contract.md) §16 (какие флаги объявлены),
> [`docs/estimate.md`](./estimate.md) (часы этапов),
> [`docs/backlog.md`](./backlog.md) (приоритеты и размеры), проверка кода
> (`packages/**`, `apps/**`) и QA-отчёты (`docs/qa-visual.md`, `docs/qa-ux-mascot.md`).
>
> **Честность статусов.** `✅` — реализовано и подтверждено кодом/тестом/QA;
> `⚠️` — частично, только флаг/контракт, ограничено тарифом или имеет оговорки;
> `❌` — нет; `❓` — публично не подтверждено (не выдумываем).
> Статусы конкурентов — по публичной документации на 13.11.2026, **лично не
> тестировались**; спорные места помечены `❓` и требуют проверки перед продажами.
> **Оценки** — из `docs/backlog.md`/`docs/estimate.md`: 1 чел.-день = 8 ч; S <1 дн,
> M 2–5 дн, L ≈5–15 дн (1–3 нед), XL >15 дн. В скобках — часы из `estimate.md`
> и пересчёт в человеко-дни, где они зафиксированы; «не посчитано» = этапа нет
> в оценке (не выдумываем цифру).

Легенда конкурентов: **T** — Яндекс Телемост, **J** — Jitsi Meet, **Z** — Zoom,
**G** — Google Meet, **M** — MS Teams, **W** — Whereby Embedded,
**I** — инфраструктура LiveKit / 100ms (для сравнения «из чего собирают»).

---

## 1. Звонки, медиа и качество

| # | Возможность | AGIL | Чем подтверждено (AGIL) | T | J | Z | G | M | W | I | Приоритет | Оценка |
|---|-------------|------|--------------------------|---|---|---|---|---|---|---|-----------|--------|
| 1 | Звонок 1:1 и группа 2–8 (mesh) | ✅ | `packages/widget/src/call/webrtc-engine.ts`; e2e/QA звонков; `maxParticipants` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | L✅/100ms✅ | P0 | сделано |
| 2 | Большие встречи 50+ (SFU) | ⚠️ контракт | `scale.mediaMode` = mesh/sfu/broadcast валидируется, но медиаплоскость — **только mesh**; `docs/deployment-record.md`: «mesh ≤8, SFU — roadmap» | ⚠️ тариф | ✅ | ✅ | ✅ | ✅ | ⚠️ | L✅/100ms✅ | **P0** | B1 320 ч (≈40 дн) + B2 240 ч (≈30 дн) |
| 3 | Simulcast / SVC / AV1 | ❌ | В коде нет выбора слоёв; `features.md` — VP8/H.264 в MVP, остальное roadmap | ❓ | ✅ | ✅ | ✅ | ✅ | ❓ | L✅/100ms✅ | P2 (после SFU) | входит в B1/B12, отдельно не оценено |
| 4 | Демонстрация экрана (+системный звук) | ⚠️ экран ✅ / звук ❌ | `getDisplayMedia` в widget; `shareAudio` — флаг/roadmap (`features.md` §2 п.7) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | L✅/100ms✅ | P1 (звук) | в B27 (96 ч ≈12 дн screen share v2) |
| 5 | Удалённое управление | ❌ | Только флаг `remoteControl` в схеме (`packages/protocol/src/config.ts:58`), реализации нет | ❓ | ✅ | ✅ | ❌ | ⚠️ | ❌ | L❌/100ms❌ | P2 | D5 L (~10–15 дн) |
| 6 | Whiteboard / доска и аннотации | ❌ | Флаги `whiteboard`/`annotations` только в схеме; UI/протокола нет | ❓ | ⚠️ аннотации | ✅ | ✅ | ✅ | ❌ | L❌/100ms ⚠️ плагин | P2 | D5 L (~10–15 дн; аннотации — B27 96 ч ≈12 дн, не сделано) |
| 7 | Шумоподавление / AGC | ⚠️ | Только браузерные constraints `noiseSuppression` (`call/media.ts:70`); RNNoise/Krisp нет | ✅ | ✅ RNNoise | ✅ | ✅ | ✅ | ✅ | L⚠️/100ms✅ Krisp | P2 | D8 M (2–5 дн) |
| 8 | Блюр и замена фона | ✅ | `packages/widget/src/call/blur.ts` (MediaPipe + canvas fallback), UI-контрол `blur` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | L⚠️/100ms ✅ | P2 | сделано |
| 9 | Автокадрирование / low-light | ❌ | Флаги `autoFraming`, `lowLightEnhancement`; реализации нет | ❓ | ❌ | ✅ | ⚠️ | ✅ | ❓ | L❓/100ms ❓ | P2 | D9 M–L (2–15 дн) |
| 10 | PiP / fullscreen / pin / таймер | ✅ | `settings-panel`, `video-tile`, `app.ts` (`pinnedId`, `layout.showTimer`) | ✅/❓ | ✅ | ✅ | ✅ | ✅ | ✅ | L⚠️/100ms ⚠️ | P2 | сделано |
| 11 | Панель статистики качества | ✅ | `webrtc-engine.ts` stats; `settings`-панель; QA `qa-visual` | ❓ | ⚠️ | ✅ | ⚠️ | ⚠️ | ✅ | L✅/100ms ✅ | P2 | сделано |
| 12 | Low-bandwidth fallback (видео→аудио→чат) | ✅ | `reduce-video → audio-only → chat-first`; QA деградации (`qa-visual` C5) | ✅ | ⚠️ | ✅ | ✅ | ✅ | ✅ | L⚠️/100ms ⚠️ | P1 | сделано |

## 2. Безопасность и доступ

| # | Возможность | AGIL | Чем подтверждено | T | J | Z | G | M | W | I | Приоритет | Оценка |
|---|-------------|------|------------------|---|---|---|---|---|---|---|-----------|--------|
| 13 | Пароль комнаты / lock | ✅ | `security.passwordRequired` (scrypt-хеш), `lockRoom`; `public-api.ts` | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | ⚠️ | L⚠️/100ms ⚠️ | P0 | сделано |
| 14 | Лобби / waiting room с admit-reject | ⚠️ | Только гейт «403, ждите хоста» (`public-api.ts:308`), **нет** очереди/кнопок впустить-отклонить | ✅ API `waiting_room_level` | ✅ lobby | ✅ | ✅ knock | ✅ | ✅ knocking | L⚠️ | **P1** | остаток B22 (168 ч ≈21 дн на security v1, лобби входит) |
| 15 | Роли host/moderator/guest + кастомные | ✅ | `resolveAccess`, custom roles API `/v1/admin/roles`, панель «Доступы» | ⚠️ соорганизаторы | ✅ | ✅ | ✅ | ✅ | ✅ | L✅/100ms ✅ | P0 | сделано |
| 16 | JWT-авторизация комнат | ✅ | `signToken`, `security.requireToken`, `permissions` в join | ✅ OAuth | ✅ | ⚠️ ZAK | ⚠️ | ⚠️ | ✅ | L✅/100ms ✅ | P0 | сделано |
| 17 | SSO / OIDC / SAML / SCIM | ❌ | Схема принимает `integrations.identity.mode:'oidc'`, но JWKS-проверка **не реализована** (сервер 501, `packages/mcp/src/tools/offline.ts:395`); SAML/SCIM нет | ✅ Яндекс 360 | ⚠️ JWT/IdP | ✅ | ✅ | ✅ | ⚠️ | L⚠️/100ms ⚠️ | **P1** | C1 M + C10 M (B29 288 ч ≈36 дн) |
| 18 | E2EE | ❌ | Только флаг `security.e2ee` и бейдж (`ui/security-badge.ts`); Insertable Streams/Encoded Transform нет | ❓ | ✅ (рамки браузеров) | ✅ с ограничениями | ✅ CSE Enterprise+ | ✅ Premium | ❌ не заявлено | L✅/100ms ❓ | **P1** | B16 200 ч (≈25 дн) + матрица отключённых фич |
| 19 | Аудит-лог действий | ✅ | `security.auditLog`, события, экран «Аудит»; экспорт в SIEM — ❌ | ❓ | ⚠️ логи | ✅ | ✅ | ✅ Purview | ⚠️ вебхуки/insights | L⚠️ | P1 (SIEM) | B29 288 ч ≈36 дн (вкл. SIEM) |
| 20 | DLP / антивирус файлов | ⚠️ | AI-правила `aiCompliance.policyRules` (regex/PII) — да; AV-скан и файловых DLP-политик нет | ❓ | ❌ | ⚠️ | ⚠️ | ✅ Purview | ❓ | L❌ | P2 | B32 (120 ч ≈15 дн) + C4 M |
| 21 | Водяные знаки на записи/шаринге | ❌ | Нет реализации (в `features.md` — roadmap) | ❓ | ❌ | ✅ | ❌ | ✅ Premium | ❓ | L❌ | P2 | B29 288 ч ≈36 дн |
| 22 | Гео-ограничения стран/VPN | ⚠️ | Схема `security.geo.*` и UI есть; **enforcement в server не найден** (grep по `allowedCountries/blockVpn` пуст) | ❓ | ❌ | ❓ | ❓ | ❓ | ❓ | L⚠️ | P2 | M (2–5 дн; в estimate.md не посчитано) |
| 23 | Liveness / анти-дипфейк | ⚠️ эвристика | `call/integrity.ts` — клиентские эвристики; внешний детектор не подключён (backlog C3) | ❓ | ❌ | ❓ | ❓ | ❓ | ❌ | L❌ | P2/P3 | B35 (160 ч ≈20 дн) + C3 M |

## 3. Совместная работа

| # | Возможность | AGIL | Чем подтверждено | T | J | Z | G | M | W | I | Приоритет | Оценка |
|---|-------------|------|------------------|---|---|---|---|---|---|---|-----------|--------|
| 24 | Чат + история + файлы + fallback | ✅ | `call/chat.ts` (`POST /v1/files`), история 200 сообщений, чат-over-signaling (`chatOverSignaling`) | ✅ | ⚠️ | ✅ | ⚠️ | ✅ | ✅ | L✅/100ms ✅ | P0 | сделано |
| 25 | Реакции / поднятая рука / участники / pin | ✅ | `ui/controls.ts` (`hand`, `reactions`, `participants`), pin в `app.ts`; авто-«speaker spotlight» — ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | L⚠️/100ms ✅ | P1 (авто-spotlight) | D9 M (2–5 дн) |
| 26 | Опросы / Q&A | ❌ | Флаги `polls` в схеме; UI/протокола нет | ❓ | ✅ в части сборок | ✅ | ✅ | ✅ | ❌ | L❌/100ms ⚠️ | P2 | D4 M–L (2–15 дн) |
| 27 | Breakout rooms | ❌ | Флаг `breakoutRooms`; сервер/виджет не реализуют | ❓ | ✅ | ✅ | ✅ | ✅ | ✅ breakout groups | L❌/100ms ⚠️ роли | P1/P2 | D4 M–L (2–15 дн) |
| 28 | Заметки встречи / transcript | ✅ | `call/notes.ts`, `ui/notes-panel.ts`, `ui/transcript-panel.ts`, admin `/transcript`, `notesMarkdown` | ⚠️ суммаризация | ⚠️ | ✅ | ✅ | ✅ | ⚠️ recording-based | L✅/100ms ✅ | P1 (улучшить) | сделано (baseline) |
| 29 | Перевод субтитров/речи | ❌ | Флаг `translation`; реализации нет | ❓ | ❌ | ✅ | ✅ | ✅ | ❓ | L⚠️/100ms ⚠️ | P2 | B34 240 ч (≈30 дн, вкл. перевод) |
| 30 | Календарь / ICS / Outlook / Google | ❌ | Флаг `calendarIntegration`; интеграции нет | ✅ Яндекс 360 | ❌ | ✅ | ✅ | ✅ | ✅ integrations | L❓ | P1 | D3 M (2–5 дн) |
| 31 | Уведомления (email/Telegram/Teams) | ⚠️ | `providers.notifications` + webhooks; встроенной доставки нет | ❓ | ⚠️ | ✅ | ✅ | ✅ | ⚠️ | L✅ вебхуки | P2 | D11 S–M (<1–5 дн) |

## 4. Запись, AI и стриминг

| # | Возможность | AGIL | Чем подтверждено | T | J | Z | G | M | W | I | Приоритет | Оценка |
|---|-------------|------|------------------|---|---|---|---|---|---|---|-----------|--------|
| 32 | Локальная запись | ✅ | `call/recording.ts` (MediaRecorder, canvas-микс, consent/индикатор), контрол `recording` | ✅ | ✅ | ✅ | ⚠️ | ⚠️ | ✅ local | L✅/100ms ✅ | P0 | сделано |
| 33 | Облачная запись / egress | ⚠️ | Есть загрузка клиентской записи `POST /v1/recordings`; **egress-композиции нет** | ✅ | ✅ Jibri | ✅ | ✅ | ✅ | ✅ cloud | L✅/100ms ✅ | **P1** | B7 168 ч (≈21 дн) + B31 176 ч (≈22 дн) |
| 34 | Транскрипция STT | ✅ batch | `security/src/stt.ts` + `/v1/stt/transcribe`, Web Speech fallback (`call/captions.ts`); стриминга/диаризации нет | ✅ | ⚠️ | ✅ | ✅ | ✅ | ✅ recording-based | L⚠️/100ms ✅ | P1 (streaming) | B30 420 ч (≈52 дн) для v2; B25 120 ч (v1 сделано) |
| 35 | AI-ассистент: summary/action items/Q&A | ✅ baseline | `protocol/compliance.ts` (`meetingNotes`), `packages/ai` (local + external/hybrid), in-call assistant webhook | ⚠️ суммаризация | ❌ | ✅ AI Companion | ✅ Gemini | ✅ Copilot | ⚠️ transcription | L⚠️/100ms ✅ agents | P1 (расширить) | B26 160 ч (≈20 дн, v1 сделано), B30 420 ч |
| 36 | Compliance-детекторы (PII/фразы) | ✅ | `packages/ai/compliance-engine.ts`, `aiAgent.policyRules`; локально, без LLM | ❓ | ❌ | ⚠️ | ⚠️ | ✅ Purview | ❌ | L❌ | P2 (дифференциатор) | сделано |
| 37 | MCP для администрирования платформы | ✅ | `packages/mcp` — 13 tools `agil_*`; у конкурентов **нет** | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | L⚠️ agents-only | P2 (дифференциатор) | сделано |
| 38 | Live-стриминг RTMP/HLS | ❌ | Флаг `liveStreaming`; egress/стримера нет | ✅ | ⚠️ Jibri | ✅ | ✅ | ✅ | ✅ RTMP out | L✅/100ms ✅ | **P1** | B5 + B6 (≈21 дн в B15, egress/стриминг) |
| 39 | CDN для HLS/LL-HLS | ❌ | Нет (self-host без CDN) | ✅ Яндекс | ⚠️ | ✅ | ✅ | ✅ | ✅ managed | L✅/100ms ✅ | P2 | B6 M (2–5 дн) |
| 40 | Вебинарный режим (receive-only) | ❌ | Флаг `webinarMode` + `scale.webinar` в контракте; сервер отдаёт `broadcast`, но публикации/роли зрителей нет | ✅ трансляции | ⚠️ | ✅ | ✅ | ✅ | ⚠️ / live stream | L✅/100ms ✅ | P1 | B4 L (5–15 дн) |

## 5. Платформа, интеграции, бизнес

| # | Возможность | AGIL | Чем подтверждено | T | J | Z | G | M | W | I | Приоритет | Оценка |
|---|-------------|------|------------------|---|---|---|---|---|---|---|-----------|--------|
| 41 | iframe/JS-встраивание + рантайм-темы | ✅ | `packages/widget`/`sdk`, `data-agil-theme`, 5 пресетов, `themeFromBrandColor`, `auditTheme` | ❌ только ссылки | ✅ IFrame API | ⚠️ SDK | ❌ | ⚠️ | ✅ web component | L⚠️ | P2 (дифференциатор) | сделано |
| 42 | REST API + webhooks | ✅ | `/v1/*`, `packages/server/src/webhooks.ts` (подписанные доставки), admin API | ✅ огранич. | ⚠️ self-host | ✅ | ✅ | ✅ Graph | ✅ | L✅/100ms ✅ | P0 | сделано |
| 43 | Панель разработчика + визуальный редактор | ✅ | `apps/dashboard`, `apps/editor`; MCP-admin | ⚠️ админка 360 | ❌ | ✅ | ✅ | ✅ | ❌ | L⚠️ | P2 (дифференциатор) | сделано |
| 44 | White-label: бренд, лого, темы | ✅ | `branding`, `theme`, `mascotEnabled`, embed; **кастомные домены — ❌** | ❌ | ⚠️ сборка | ⚠️ | ❌ | ❌ | ✅ branding | L⚠️ | P2 | D14 кастомные домены S (<1 дн) |
| 45 | Кастомные домены / SaaS-поддомены | ❌ | Нет (только брендинг; `customDomain` в коде отсутствует) | ❓ | ⚠️ свой хост | ⚠️ | ❓ | ❓ | ⚠️ | L❓ | P2 | D14 S (<1 дн, домены) |
| 46 | Мобильные приложения / нативные SDK | ❌ | Нет ни iOS/Android-приложений, ни нативных SDK (только браузерный `@agil/sdk`); RN/native — backlog D1 | ✅ приложения | ✅ SDK | ✅ SDK | ✅ | ✅ | ✅ SDK (iOS/Android/RN/Flutter) | L✅/100ms ✅ | **P1/P2** | B14 360 ч (≈45 дн) + D1 |
| 47 | SIP / PSTN дозвон | ❌ | Флаг `sipDialIn`; шлюза нет (Jigasi-аналог не подключён) | ⚠️ телефония | ✅ Jigasi | ✅ | ⚠️ | ✅ | ✅ dial-in | L✅/100ms ⚠️ | P2 | D6 XL (>15 дн; в estimate.md **не посчитано**) |
| 48 | Биллинг / тарифы / квоты | ❌ | Лимиты в конфиге есть, но метринга/тарифов/биллинга нет | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | L✅/100ms ✅ | P2 | G1 L + B33 180 ч (≈22 дн) |
| 49 | Мультитенантность / организации | ✅ | `tenantId`, API-ключи на тенант, per-tenant config/audit; UI «Организация» | ✅ | ⚠️ инстанс | ✅ | ✅ | ✅ | ⚠️ | L⚠️ Cloud | P0 (дифференциатор) | сделано |
| 50 | Доступность (WCAG 2.2 AA) | ⚠️ | ARIA-live, focus trap, клавиатура, `aria-label`; формального WCAG-аудита нет, QA нашёл gap’ы (mascot panel без dialog-семантики и др.) | ❓ | ⚠️ | ✅ | ✅ | ✅ | ⚠️ | L⚠️ | P2 | D13 M (2–5 дн) |
| 51 | Локализация | ⚠️ | `ru/en` в виджете и i18n; больше языков нет | ✅ ru | ⚠️ | ✅ | ✅ | ✅ | ⚠️ | L⚠️ | P2 | D13 M (2–5 дн, вкл. локали) |

---

## 6. Топ-10 недостающих функций для паритета

Порядок — по влиянию на сделки с B2B/enterprise (и с учётом зависимостей).

| # | Фича | Зачем (кому критично) | P | Оценка | Волна |
|---|------|------------------------|----|--------|-------|
| 1 | **SFU-медиаплейн (LiveKit) + мульти-нода** | без этого нет 50+ участников и enterprise-тендеров; mesh ≤8 — потолок | **P0** | B1 320 ч + B2 240 ч (≈40+30 дн) | Волна 3 |
| 2 | **Облачная запись (egress) + RTMP/HLS-стриминг** | запись «на сервере», стримы в YouTube/VK, вебинары | **P1** | B7 168 ч + B5 168 ч + B6 M (≈21+21+5 дн) | Волна 3 |
| 3 | **E2EE** | обязательный пункт enterprise/гос-тендеров; нужна матрица отключённых фич | **P1** | B16 200 ч (≈25 дн) | Волна 3 |
| 4 | **SSO/OIDC + SCIM/RBAC админки** | корпоративный вход, управление доступом, аудит админов | **P1** | C1 M + C10 M (B29 288 ч ≈36 дн) | Волна 3 |
| 5 | **Лобби с admit/reject** | нормальный waiting room (сейчас только «ждите хоста»); безопасность гостей | **P1** | остаток B22 (≈21 дн) | Волна 2–3 |
| 6 | **Breakout rooms + опросы/Q&A** | массовый B2B-функционал обучения/воркшопов | P1/P2 | D4 M–L (2–15 дн) | Волна 3 |
| 7 | **Календарь/ICS/Outlook/Google** | «создать встречу из календаря», приглашения, повторяемость | P1/P2 | D3 M (2–5 дн) | Волна 2–3 |
| 8 | **Мобильные приложения/SDK (iOS/Android/RN)** | мобильные сотрудники и встраивание в чужие приложения | **P1/P2** | B14 360 ч (≈45 дн) + D1 | Волна 4 |
| 9 | **Вебинарный broadcast + CDN** | тысячи зрителей, вебинары/конференции | P1/P2 | B4 + B6 (L+M, ≈10–20 дн) | Волна 3 |
| 10 | **Whiteboard/аннотации + remote control** | «как в Zoom/Meet» для обучения и поддержки | P2 | D5 L (≈10–15 дн) + B27 96 ч аннотации | Волна 4 |

Близко к топ-10: SIP/PSTN (D6 XL, отдельный этап), авто-spotlight/auto-framing (D9),
белые метки с доменами (D14 S), биллинг (G1 L), SIEM-экспорт (в B29 288 ч).

## 7. Наши дифференциаторы (что есть, чего нет у конкурентов)

| Возможность | У кого из 6 вендоров | Комментарий |
|-------------|----------------------|-------------|
| **MCP-сервер для администрирования платформы** (`packages/mcp`, 13 tools) | ❌ ни у кого; у LiveKit — только MCP для агентов внутри звонка | позволяет настраивать комнаты/темы/лимиты нейросетью и из IDE |
| **AI-комплаенс локальными правилами** (PII/фразы/regex, без LLM) | ❌/⚠️ (Teams Purview — крупный DLP; у остальных локального compliance-движка нет) | данные не покидают периметр, работает офлайн |
| **Рантайм-темизация из бренд-цвета** (`themeFromBrandColor`, `auditTheme`, 5 пресетов, проверка контраста) | ⚠️ частично (Jitsi — сборка, Zoom — ограниченно, Whereby/Daily — темы, но не вычисление палитры) | без пересборки, с гарантией контраста |
| **API-first + версионированный iframe-мост + SDK** | ⚠️ (Jitsi IFrame API, Zoom SDK, LiveKit SDK — но не «свой контракт поверх чужого медиа») | `{v:1}`, zod, `agil:ready/event/command/error` |
| **Визуальный редактор конфигурации + demo/editor** | ❌ ни у кого | быстрый онбординг интегратора |
| **Мультитенантные SaaS-организации + per-tenant audit/config/guard** | ⚠️ (Zoom/Meet/Teams — enterprise-админки, но не embedded white-label) | тенант = организация, ключи, лимиты, аудит |
| **Guard критических изменений** (`POST /v1/admin/guard/assess`, маскот, findings) | ❌ ни у кого | защита от разрушительных конфигов |
| **Чат, независимый от медиа** (`chatOverSignaling`) | ⚠️ редкость; у большинства data-channel | чат выживает при деградации медиа |
| **Self-hosted 152-ФЗ-контур без GPL** | ✅ Jitsi/LiveKit self-host, но без AI-админки и MCP | комбинация «on-prem + AI-админка + API» |
| **C2PA-провенанс записей** (roadmap) | ❌ публично ни у кого | ниша, +80–160 ч по оценке рисков D15 |

## 8. Чего не стоит делать сейчас

1. **Свой SFU с нуля** — 8 568 ч / 52 недели против 5 424 ч / 33 недели на LiveKit
   (`docs/estimate.md` §C); риск качества связи и эксплуатации выше выгоды.
2. **Форк Jitsi** — чужая архитектура (XMPP/Lua/Kotlin), слабая дифференциация,
   AI/dashboard/MCP всё равно писать самим (≈3 400 ч, но «ещё один Jitsi»).
3. **Нативные мобильные приложения до PMF** — B14 360 ч + D1; сначала мобильный веб
   и React Native-обёртка (D2 S–M), потом CallKit/push.
4. **SIP/PSTN и телефония** — D6 XL, регуляторика/номера/операторы; отдельный
   продукт, а не фича виджета.
5. **Whiteboard/remote control «с нуля»** — commodity, лучше интеграция/партнёрство;
   D5 L можно отложить до запросов клиентов.
6. **Полный биллинг/тарифы** — G1 L; на этапе пилотов достаточно квот/лимитов,
   биллинг — когда есть повторяемые продажи.
7. **CDN/мультирегион/DR до SFU** — B10 XL, E6 XL; сначала один регион и честные
   лимиты mesh/SFU.
8. **E2EE + запись/STT/AI «одновременно»** — у всех вендоров E2EE отключает часть
   фич; обещать «E2EE и транскрипт» нельзя без клиентского STT (см. §10 в
   `docs/reverse-engineering.md`).
9. **C2PA/deepfake-R&D как отдельный продукт** — это дифференциатор, но не блокер:
   +80–160 ч (C2PA) и B35 160 ч (liveness), после SFU/E2EE.
10. **«Как Zoom» по объёму фич** — риск +300–600 ч (D10 в `docs/estimate.md`);
    фиксировать scope и продавать этапами.

## 9. Сводка по волнам (согласовано с backlog)

| Волна | Что | Часы/размер |
|-------|-----|-------------|
| 1 (сейчас) | QA-фиксы, TURN из внешней сети, закрытие демо/docs, бэкапы | A1–A5, S–M |
| 2 (2–4 нед) | мониторинг/CI, SFU-контракт, TURN health, S3/Postgres, календарь (?), тонкие обёртки SDK | B3 M, B8 L, D2 S–M, D11 S–M, D15 M |
| 3 (1–3 мес) | **SFU + мульти-нода, облачная запись/стриминг, E2EE, OIDC/SSO, вебинары, breakout/опросы, мобильный RN** | B1/B2/B4/B5/B7, C1/C2, D3–D5, D8–D10 |
| 4 | нативные мобильные SDK, SIP/PSTN, перевод, мультирегион/DR, сертификации | B10/B14/E6, D1/D6/D7, C7/C8 |

Ориентир до Production-ready: **≈4 000 ч / 24 недели** (команда 5,5 FTE), вариант
на LiveKit — **5 424 ч / 33 недели** (`docs/estimate.md` §E).

## 10. Что помечено «❓» и стоит перепроверить перед продажами

1. Точные лимиты участников Телемоста по тарифам (меняются, **не подтверждено**).
2. E2EE у Телемоста — публично не документирован (**не подтверждено**).
3. Whiteboard/breakout/опросы у Телемоста — в публичном API не найдены (**❓**).
4. E2EE/SSO/polls у Whereby Embedded — в feature comparison не заявлены явно
   (knocking/breakout/recording/transcription/captions — заявлены).
5. E2EE/SIP у 100ms — по публичным обзорам не подтверждено (**❓**).
6. Zoom custom domains/white-label и Meet whiteboard по редакциям — меняется,
   проверить перед использованием в маркетинге.
7. Google Meet dial-in и локальная запись — зависят от редакции (**⚠️/❓**).
8. Teams E2EE — требует Teams Premium у организатора; матрица отключённых фич
   шире, чем у Zoom (см. `docs/reverse-engineering.md` §10.2).

## 11. Источники

**Внутренние:** `docs/features.md` (матрица 80 фич), `docs/reverse-engineering.md`
(§2 Jitsi, §3 LiveKit, §4 медиасерверы, §5 Телемост, §6 commercial SDK, §10
безопасность, §12 AI, §13 запись/STT), `docs/contract.md` §16, `docs/estimate.md`,
`docs/backlog.md`, `docs/deployment-record.md`, код `packages/**`, `apps/**`,
`docs/qa-visual.md`, `docs/qa-ux-mascot.md`.

**Внешние (публичная документация, проверено 13.11.2026):**
[Yandex Telemost API](https://www.yandex.com/dev/telemost/doc/ru/) ·
[Jitsi E2EE (lib-jitsi-meet)](https://jitsi.github.io/lib-jitsi-meet/classes/JitsiConference._internal_.E2EEcontext.html) ·
[Zoom E2EE](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0075502) ·
[Zoom AI](https://www.zoom.com/en/small-business/ai/) ·
[Meet CSE](https://support.google.com/meet/answer/11605714) ·
[Meet notes/Gemini](https://support.google.com/meet/answer/14754931) ·
[Teams E2EE](https://learn.microsoft.com/en-us/microsoftteams/teams-end-to-end-encryption) ·
[Teams recap/Copilot](https://learn.microsoft.com/en-us/microsoftteams/intelligent-recap-calls-meetings) ·
[Whereby Embedded feature comparison](https://docs.whereby.com/further-resources/faq-and-troubleshooting/whereby-embedded-feature-comparison) ·
[Whereby docs](https://docs.whereby.com/) ·
[100ms для EdTech (роли/breakout)](https://www.100ms.live/solutions/edtech) ·
[100ms Live app (HLS/RTMP/запись/spotlight и др.)](https://play.google.com/store/apps/details?id=live.hms.app2) ·
[100ms — обзор фич (третья сторона, помечено)](https://appadvisor.in/software/100ms) ·
[LiveKit egress](https://docs.livekit.io/home/egress/overview/) ·
[LiveKit E2EE](https://docs.livekit.io/home/client/tracks/encryption/) ·
[LiveKit MCP](https://docs.livekit.io/agents/logic/tools/mcp.md).
