Я думал, мое приложение должно просто помогать учить слова. Оказалось, оно должно само подсказывать, что учить дальше

Почти год я развиваю VibeLing — приложение для изучения иностранных слов и фраз.
Его идея с самого начала казалась мне довольно понятной. Человек встречает незнакомое выражение в фильме, книге или статье, добавляет его в приложение, а дальше AI сам готовит перевод, примеры и произношение. После этого из добавленных слов составляются тренировки.
Мне нравилось, что в такой модели нет фиксированного курса. Можно добавить что угодно: редкое слово, сленг, рабочий термин или целую фразу, которую хочется запомнить. Пользователь сам собирает словарь из того, что действительно встречается в его жизни.
Именно так я и сам изучал языки. И долго считал, что это и есть законченная концепция продукта.
Но время от времени мне приходил примерно один и тот же комментарий:

Сначала я воспринял это как небольшую проблему первого запуска. Но спустя время оказалось, что в этом вопросе была спрятана главная дыра всего продукта.
Первый костыль: положить что-нибудь в пустой словарь
Когда новый пользователь впервые открывал VibeLing, у него действительно еще не было ни одного слова. А значит, не было и тренировок. Получался пустой экран в приложении, которое только что обещало помочь учить язык.
Первое решение казалось очевидным: заранее добавить несколько демо-слов. Человек сразу увидит заполненный словарь, сможет запустить тренировку и поймет, как все работает. Ненужные слова потом можно удалить.
Я такое видел в приложениях для ведения расходов. Когда устанавливаешь их, то там есть пару демо-расходов на кофе и какие-нибудь продукты. Вот я и подумал сделать также.
В итоге я добавил новым пользователям небольшой стартовый набор — что-то вроде hello, house и других базовых слов.
Пустой экран исчез. Вместо него появилась новая проблема.
Люди с английским на уровне B1–B2 открывали приложение и видели слова, которые знали много лет.
Но потом мне подкинули очевидную идею, с которой сложно спорить. И таких комментариев было много:

Я добавил фичу, которой сам не пользовался
Честно говоря, я вообще не хотел добавлять готовые коллекции.
Я сам никогда не пользовался ими в языковых приложениях. Мне всегда казалось намного полезнее встретить незнакомую фразу, потребляя контент, а потом просто добавить ее самостоятельно. Она уже связана с конкретным контекстом и нужна лично тебе, а не абстрактному ученику с таким же уровнем языка.
Именно вокруг этого я изначально строил VibeLing. Не готовый курс и не очередной набор "100 главных глаголов", а инструмент, в который можно добавить вообще что угодно именно из своей жизни.
Поэтому, когда пользователи начали просить подборки, идея мне не нравилась. Она выглядела как шаг назад к языковым приложениям, от которых я как раз хотел отличаться.
Я решил, что пользователи лучше знают, чего им не хватает. И начал собирать тематические коллекции: слова и фразы для путешествий, работы, общения и других ситуаций. Человек мог открыть подходящую тему и добавить нужное в свой словарь.
Это решение оказалось намного полезнее демо-слов. Коллекциями действительно начали пользоваться. У человека появился понятный источник, из которого можно взять первые слова, а выбор при этом оставался за ним.

Формально проблема была решена.
Но меня все равно что-то смущало. Я добавил востребованную функцию, которой сам не верил и которой по-прежнему не хотел пользоваться.
Сейчас я понимаю, что тогда совершил довольно типичную продуктовую ошибку: услышал не проблему пользователя, а предложенное им решение.
Люди совершенно правильно чувствовали свою боль. Они открывали приложение и не понимали, что учить дальше. Но из этого еще не следовало, что нужны были именно коллекции.
Постепенно проявилась и практическая проблема. Пользователи добавляли все интересное из доступных коллекций и снова спрашивали, что делать дальше. Я мог постоянно выпускать новые списки, но у этого не было конца.

В какой-то момент я даже начал думать о пользовательских коллекциях. Пусть люди сами составляют наборы, публикуют их и делятся друг с другом. Но за этой идеей сразу появлялся отдельный огромный продукт: редактор, поиск, модерация, рейтинги, дубли, локализации, контроль качества.
И даже если все это построить, на выходе все равно получилась бы еще одна большая библиотека статичных списков. Она давала бы больше контента, но не отвечала бы на главный вопрос конкретного человека: что полезно выучить именно мне сейчас?
Я отложил эту тему и продолжил улучшать то, что уже было. Возможно, так продолжалось бы еще долго, если бы я сам не уперся в ту же проблему.
Английский скрывал проблему, а сербский ее показал
Я сам учу в VibeLing английский и сербский. Еще немного добавлял турецкие слова, когда был в Турции.
С английским исходная механика работала хорошо. Я постоянно сталкиваюсь с языком: смотрю фильмы, читаю статьи. Незнакомые выражения появляются сами. Мне остается просто добавить их в приложение.
С сербским все оказалось иначе. Я живу в Сербии и использую язык в повседневных ситуациях, но не потребляю на нем контент.
В результате в словаре лежало около тридцати слов и фраз, добавленных несколько месяцев назад. Я продолжал их повторять, но почти не добавлял ничего нового.
И тут я наконец понял, что не так было с продуктом все это время.
VibeLing отлично обрабатывал слово после того, как пользователь его принес. Но самую сложную часть процесса приложение оставляло человеку: сначала где-то найти подходящее слово и решить, что именно стоит учить.
Получалось, что весь путь выглядел так:
Найти полезное новое слово вне приложения.
Добавить его в VibeLing.
Получить перевод, примеры и произношение.
Выучить его и повторять по расписанию.
Я хорошо построил шаги со второго по четвертый и почти год принимал их за целый продукт.
Приложение начиналось с середины.
Что, если приложение должно само знать, что учить дальше
Вместо того чтобы ждать, пока человек принесет очередное слово, VibeLing может каждый день предлагать ему новый список слов и фраз. Не одинаковый для всех, а собранный с учетом языка, уровня, цели, интересов и уже существующего словаря.

Если человек учит сербский с нуля для жизни в стране, ему можно предложить выражения для магазина, врача или разговора с соседями. Если у него английский B2 и он добавляет лексику про разработку, набор должен быть совсем другим.
При этом пользователь по-прежнему принимает решение сам. Нужное можно добавить в словарь одним нажатием. А если какие-то слова не были добавлены, то значит они неинтересны или пользователь их знает. На следующий день приложение собирает новый список уже с учетом предыдущего выбора.
Еще несколько лет назад для такой функции пришлось бы вручную строить огромную базу слов, связывать ее с уровнями и темами, а потом отдельно поддерживать все это для каждого языка.
Сейчас эту задачу во многом можно переложить на нейросети. На вход модель получает изучаемый язык, уровень, цели и интересы пользователя, его текущий словарь и список уже отклоненных вариантов. На выходе я получаю небольшой структурированный набор новых слов и фраз.
Это пока не сложная рекомендательная система с многолетней историей поведения. Но уже и не статичная коллекция, одинаковая для всех. Главное — теперь приложение может продолжать путь с того места, на котором находится конкретный человек.
Из инструмента начала складываться система
Раньше я описывал VibeLing примерно так: "Удобное приложение, в которое можно добавить любые слова и фразы, а потом выучить их".
Описание было точным, но в нем не было ответа на важный вопрос: почему пользователь должен вернуться завтра, если сегодня ему нечего добавлять и нечего повторять?
Теперь концепция звучит иначе: VibeLing сам знает, что вам учить дальше.
Для меня это и есть главный сдвиг. Раньше я делал хороший инструмент для человека, который уже понимает, что хочет учить. Теперь пытаюсь построить систему, которая полностью закрывает проблему пополнения словарного запаса.
Функцию я уже выпустил и начал менять вокруг нее экраны, тексты и промоматериалы. Но пока рано говорить, что гипотеза сработала. Мне еще предстоит посмотреть, сколько людей открывают рекомендации, сколько вариантов из списка добавляют, возвращаются ли за новой подборкой на следующий день и начинают ли чаще проходить тренировки.
Вполне возможно, что первые рекомендации окажутся недостаточно точными или людям понадобится больше контроля. Это уже покажет использование.
Если хочется посмотреть на механику вживую, приложение называется VibeLing. Оно доступно на iOS и Android.
В бесплатной версии каждый день рекомендуется 3 новых слова или фразы. В Pro доступен весь ежедневный список рекомендаций из десяти слов и фраз. У Pro-версии есть 3-дневный бесплатный триал. По тренировкам и добавлению слов в бесплатной версии нет никаких ограничений.
Буду особенно рад обратной связи по качеству рекомендаций — сейчас это для меня главный вопрос.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.