«SMS-провайдера» нет вообще — в коде заглушка. Боевой вход в продукт уже живёт в Telegram-боте. Вопрос не «что вместо SMS» — а как подключить воронку к тому, что уже работает.
smsAuth.ts — мокнут, код 000000 проходит всегда. Реального провайдера нет. Параллельно в agent-service/telegramOnboarding/ живёт state-machine с голосом, создаёт реального юзера в Supabase с bcrypt-паролем и выдаёт доступы. Нас это выручает: отключать нечего, строить надо одно.
Кнопка «Войти через Telegram» → deep-link на существующий бот → нативная кнопка request_contact → один тап → реальный номер + Telegram-identity → кабинет. Реализует единый онбординг: тот же бот, что пускает в демо, заводит в платный продукт.
Это не криптографическая авторизация. Это лид-кэптур + лёгкая отсечка ботов перед показом демо-кабинета. Цель — забрать контакт и завести в кабинет, не защитить платёж. «Серьёзные» варианты с OAuth или WhatsApp тут избыточны.
| Вариант | Стоимость | Эффорт | Трение | Главный минус |
|---|---|---|---|---|
| ① TG deep-link + request_contact | $0 | Средний (бот есть) | Минимальное | Уводит в приложение TG |
| ② Soft-gate: номер без кода | $0 | Очень низкий | Максимальная конверсия | Грязные лиды, нет отсечки |
| ③ Telegram Gateway (код в TG) | ~$0.01/код | Средний | Низкое | Платно + оплата в TON |
| ④ TG Login Widget | $0 | Низкий | Высокое на мобиле | Не отдаёт номер телефона |
| ⑤ WhatsApp OTP | дорого + approval | Высокий | Среднее | Не та аудитория, риск бана |
| ⑥ Email magic-link | ~$0 | Низкий | Слабая для RU | Аудитория не в почте |
Кнопка «Войти через Telegram» → t.me/наш_бот?start=ТОКЕН_СЕССИИ → Start → нативная кнопка «Поделиться номером» → один тап → бэк получает реальный номер + Telegram-identity → связывает с сессией → поллинг → кабинет.
request_contact — нативная кнопка Telegram, аудитория её знает.Просто собрать номер одним полем, без OTP, сразу в кабинет. Бенчмарк: OTP-шаг режет 15–30% конверсии. К моменту гейта юзер уже вложился: ввёл Instagram, прошёл AI-анализ, увидел 3 сгенерённых креатива. Ставить OTP-стену после этого — терять треть горячих.
Отсечку ботов дешевле делать пассивно (rate-limit по IP, honeypot, проверка формата). Реальную верификацию поднять позже, на шаге оплаты, где она правда нужна. Минус: грязная база номеров — для демо приемлемо, для базы в долгую рискованно.
Официальная отправка кода как Telegram-сообщение на номер. Сохраняет привычный UX «номер → код». Но: ~$0.01 за код, оплата в TON (крипта — доп. трение для ИП), и нет доставки если у номера нет Telegram (SMS-fallback не заявлен). Для TG-аудитории редкость, но не ноль.
| Канал | Цена |
|---|---|
| TG deep-link bot (request_contact) | $0 |
| Telegram Gateway | ~$0.01 (RU — уточнить в ЛК) |
| SMS.ru (авторизационное) | ~8.4 ₽ (~$0.09) за 1-е SMS/мес |
| WhatsApp OTP (официальный) | $0.004–$0.046, RU дороже |
Telegram в ~9–14× дешевле RU-SMS и живёт там, где аудитория.
TG Login Widget: не отдаёт номер телефона + popup ломается на мобилке. Главная задача (забрать контакт) не выполняется.
WhatsApp OTP: дорого для RU (individual/international rate), approval-трение шаблонов, серые шлюзы = риск бана. Не та аудитория — маникюрщицы и стоматологи живут в Telegram.
Email magic-link: RU consumer-аудитория живёт в мессенджерах, не в почте. Magic-link уходит в спам.
Разница в цене копеечная, разница в конверсии и переиспользовании инфры — принципиальная. Оба топ-варианта $0, оба в Telegram, оба используют то, что уже построено.
smsAuth.ts и экран SmsAuthStep — они пустые, от них нет ни защиты ни пользы.request_contact + поллинг сессии → кабинет. Технически — один новый эндпоинт и кнопка в UI.Это аудит кода, не A/B по реальным лидам. Цифра «15–30% drop-off на OTP» — бенчмарк по индустрии (heyflow.com, uxcam.com), не наши данные. Реальный эффект для этой воронки и этой аудитории нужно мерить.
Поллинг сессии после TG deep-link — надо реализовать (токен сессии → связка с Telegram-identity → статус ready). Это несколько часов работы бэка, не одна строчка.
Часть аудитории может не иметь Telegram — для страховки держать soft-gate (номер без кода) как фоллбэк-опцию на экране.