PrepBro — база вопросов с собеседований, моки с другими бойцами и как claude мне его положил

 Публичный пост
10 апреля 2026  27

Пока все мои проекты приносят только убытки, решил делать социально-полезные проекты. Это - один из них. Мне просто нравится их делать, возможно когда-нибудь и получится их монетизировать.

История конкурента

Жил-был один маркетолог, который хотел свитчнутся на питон-разработчика. В качестве пет-проекта сделал сайт со списками вопросов с собеседований. Нашёл дешёвых ребят на HH, которые бы ему перебивали вопросы с собеседований (собеседования лежат на ютубе, их куча). Из этой таблички сделал простенький сайт, где были вопросы и их частота. Качество вопросов иногда хромало, было много дубликатов, но польза сервиса всё равно была огромной. Не знаю, была ли какая-то реклама у сервиса, но по сарафанному радио и рекомендациям в разных местах сайт рос очень быстро. Даже не гуглился, потому что никакого SEO не было! Он был полностью бесплатным, нужно было просто подписаться на каналы. Хочешь посмотреть все вопросы по питону? Пожалуйста, вот тебе 4 канала, подпишись и смотри бесплатно. Нам сервис казался полностью бесплатным, но создателю он на рекламе приносил такой доход, который позволил ему фуллтайм заниматься проектом. Вот он, успех! За это, кстати, огромный респект этому маркетологу - он приносил пользу людям и делал успешный проект. Я бы не додумался так монетизировать.

Спустя время он решил делать версию 2.0! Куча новых фичей, больше вопросов! Стал платить людям за сливы записей с собеседований и уже на реальных собеседованиях подбивать базу вопросов. Новый дизайн, полноценная команда! На это дело он открыл сбор, где за небольшое пожертвование предоставлял доступ на год ко всему новому функционалу! И на этом собрал аж 5 миллионов рублей! Не перестаю восхищаться и завидовать. Однако после выкатки версии 2.0 оказалось, что сами вопросы стали закрыты за пэйволлом. То, что имело цену в подписки на его каналы теперь стоит денег, аж 8к рублей за месяц или 12.5к за год. В различных комьюнити, где раньше рекомендовали его сайт, стали писать, что сайт соскамился. Но я его не осуждаю - все мы хотим денег, пользы он много принёс обществу. Добавлять платные услуги было необходимо, но вот забирать то, к чему все привыкли было сильной репутационной потерей. Сливы вопросов оттуда стали бегать по чатам / сайтам со сливами (ещё бы, там даже защиты особо не было, обычными курлами можно было всё выгурзить). Да и большинство вопросов / собеседований фигурировали не только у него, но и в ОМ, где тоже платили деньги за записи собеседований. Только вот интерфейса к этой пачке ворованных вопросов не было.
Ну и сначала я для своих друзей-вкатунов сделал простенький интерфейс для слитых вопросов, а затем уже стал приводить его к полноценному проекту. Так и зародился PrepBro.

Большая чистка и обогащение

Начав работу с вопросами я обнаружил, что там аномально много очень плохих вопросов.

  • Кучи дубликатов (иногда с небольшими отличиями по смыслу, а иногда полные дубликаты)
    • "Зачем нужен Virtual DOM", "Как работает Virtual DOM", "Как устроен Virtual DOM", "Почему Virtual DOM быстрее", "Что такое виртуальный DOM", "Что такое Shadow Virtual DOM", ...
  • Странные формулировки (вырванные из диалога / контекста)
    • "Куда записывать признак числа NaN если закончились биты и байты"
    • "Что будет при расчете у числа остатка от деления на 1"
  • Огромная масса странных и hr-вопросов
    • "Кто ты" питонисту
    • "Где живёшь", "Есть ли офферы на руках", "Сколько тебе лет", "Есть ли вопросы" - почти в каждой профессии
    • "Как дела" - аж в двух профессиях
    • "Нравится ли заниматься настройкой инфраструктуры" - фронту (хотя может и нормальный вопрос, мне показался странным)

Это вопросы из реальных собеседований, но они скорее мешают, чем помогают готовиться. К тому же, после чисток их определённо нужно дополнять - хочется сделать реально классную базу вопросов. Я поискал в интернете различные списки вопросов, сливы баз компаний, чьи-то сборники (их много публично на гитхабе!), попсовые статьи "топ 10 самых популярных вопросов на ..." (хотя это не так плохо как кажется, многие рекрутёры не успев подготовиться к собесу берут первую статью с гугла, лично был свидетелем таких случаев). Делал по каждой профессии отдельные поиски. Спасибо нейронкам за то, что помогли это разметить. Получилось нашкребсти суммарно около 100к вопросов. Проблемы по большей части в них те же самые, что и в изначальном списке.
Я ещё хотел попробовать брать реальные собеседования и транскрибировать (спасибо ОМ за огромное количество собесов за пэйволлом). Получалось плохо - ну не умеют ещё нейронки транскрибировать хорошо технические термины. А там детали могут быть важны! Впрочем, мне и моего списка было достаточно.

Теперь к интересному - как я планировал исправить ситуацию. Я сделал пустую базу вопросов. Каждый новый вопрос добавлялся по одному. Для него генерировался эмбеддинг (для поиска по смыслу). Далее каждый новый вопрос когда добавлялся в базу искал смысловые или полнотекстовые дубликаты в базе. Если нашёл дубликат, то оба вопроса отправлялись mistral-nemo. Она решала, что с ними делать - казнить первого, казнить второго, оставить оба или объединить с переформулировкой. gpt-4o-mini переформулировал вопросы. Только после они добавлялись в базу. Волны regexp форматирования, агенты клода пробежались по вопросам в поиске деструктивных паттернов и руками перелопатили всё, что мне не понравилось. На словах звучит просто, но было убито несколько дней и много токенов для получения нормального качества.

Оценка и написание ответов

Я придерживаюсь мнения, что грейд вопроса субъективен. То есть, один и тот же вопрос могут спрашивать как на джуна, так и на сеньора. Зачастую там даже пулы вопросов дают те же самые, но от синьора ожидают более экспертный ответ. И права на ошибку у него меньше. Да и на джунов конкуренция сейчас такая, что отвечать надо уметь на синьора, чтобы обогнать волков (даже если ты сам волк, хе-хе). Потому сложность люди могут определять сами.

Моя задача - дать стартовую оценку (вес стартовой оценки - 5 людских голосов), а пользователи сами откалибруют, если будут не согласны. Частота не совсем субъективна, но данных слишком мало для адекватной оценки. Если у меня есть запись пяти собесов в Яндекс (из 100 ежедневных, которые проводят в Яндексе), я же не могу сказать, что эти вопросы встречаются часто в Яндексе? Гипотетически могу, но я видел базы собеседований во многие компании и пул вопросов там очень большой. Интервьюер волен выбирать те вопросы из списка, которые ему больше нравятся, потому я дал возможность пользователям самим указывать, видели они этот вопрос на собеседовании куда-нибудь, или нет.

Для оценки я решил использовать mistral-nemo. Лучшая скоринговая модель на рынке. Да и что там скорить? Определить примерную частоту вопроса, грейд, тэги. Позже я выяснил, что оценки какие-то... странные. Не соответствуют действительности, тэги рандомные, всё с жёстким перекосом. Позже я думал над тем, как победить эту проблему.
На вопросы отвечал мне gpt-4o-mini, я хотел качественные ответы, но не отдать почку. Когда было отвечено на 30к вопросов я вдруг понял - я забыл markdown требовать с них. Это означало, что ответы нейронок будут выглядеть ужасно. Отображал ответы нейронок в формате кода, но хотелось красоты. Снёс всё и начал заново. И так я время от времени находил косяки или понимал, как можно улучшить ответы. Токены сжигал нещадно. Пока у меня не появилась гениальная идея.

Я плачу клоду 100 баксов, но в периоды активной разработки переключаюсь на тариф за 200. Чаще потому, что единовременно мне нужно много токенов (плотный вечер / выходные), но при этом, глобальные лимиты я не расходую совсем. К тому же, claude code даёт по подписке токенов чуть ли не в 10 раз больше, чем ты бы отдал за них через API. Звучит как в ресторанах "плати один раз и съешь сколько сможешь". Этим я и решил заняться.
Предварительно я с одним агентом проработал концепт, проверил его работу руками. Он не отвечает на вопросы сам, а создаёт под-агентов (по 100 за раз, а каждый из них отвечал на 50 вопросов). 5000 ответов за раз - неплохо, правда? Родительский агент лишь валидирует. Ну и всякие фишки с откатом диалога, прогрессами в файлах и т.д.

Когда я примерно понял стратегию, я стал создавать 5-10 вкладок клода, требовать каждому взять имя, выбрать себе профессию в общем файле и начать работу. Было забавно наблюдать, когда Кратос, Арагорн, Данте и Кадар Бессмертный в общем файле делят вопросы и ворчат, что другой агент плохо работает. А ворчать было на что! Под-агенты то и дело пытались автоматизировать ответы на вопросы, создавая странные файлы, делая странные вещи, ещё и мешая другим агентам. Но в целом, БД наполнялась быстро. Правда за 10 минут выжрать 5-часовой лимит - это мощно. Недельный лимит тоже сгорал на глазах. По итогу я был очень доволен, пока не стал смотреть глазами. А там ответы перепутаны между вопросами, в ответах бывает бред или вообще пустые. Потратив ещё несколько итераций, нащупав баланс качества и лучшие промпты, я таки смог неплохо ответить на 20к вопросов. Да, под-агентам лучше не давать более 10 вопросов, потому что уследить за таким количеством агентов невозможно. Да и родительские агенты ругались, что глазами отсматривать всё - пустая трата токенов, потому сами пытались как-то автоматизировать отсмотр, за что я их бил палками. В процессе я осознал, что мне гораздо дешевле просто отправлять запросы через последний дипсик и получать ответ обычным скриптом. 50-70 баксов мне хватит за глаза на весь скоринг и ответы. На что я и перешёл впоследствии, перестав мучить клод.

До этого осознания я успел заставить отсмотреть глазами (но уже почти без под-агентов) тэги и скоринг. И это оказалось отличной идеей - когда агент видит общий пул вопросов и оценки, он видит перекосы и где нужно поправлять. Это помогло выравнять оценки.
Но частота и сложность была очень рваной из-за того, что у нейронок был маленькая градация. Для того, чтобы исправить эту ситуацию, я добавил немного шума. Представим, что кто-то залётный пришёл и рандомно потыкал на кнопки. Именно это и "размазало" оценку, получился красивый список, который далее будет калиброваться пользователями.

Моки ⚔️

Вот это самая интересная и полезная часть проекта! Идея подсмотрена у random coffee и у Ленки (не нашёл на вастрике её), которая собирала клуб для чтения DDIA. Там была классная идея - LeetCode Mock club. Раз в неделю бот мэтчит тебя с другим бойцом и вы проводите друг с другом мок по алгоритмам на определённую тему.
Но как же этого не хватает для обычных профессий, вопросов! Люди приходят на собесы и сыпятся, потому что у них нет опыта прохождения их, не понимают, какого это быть на месте интервьюера. Это лучший способ набить руку и побороть страх, чтобы не упасть лицом в грязь на своих первых 3-5 собеседованиях.

У нас всё просто - выбираешь в боте профессию, он находит тебе другого бойца и вы собеседуете друг друга. Если не знаете, что спросить, то у каждого будет свой пул вопросов и задач. Вам не попадётся человек, если вы с ним собеседовались недавно - люди будут разные. Также есть система лайков и репортов. С негодями будем разбираться, а классных ребят поощрять!

Геймификация 🔮

До изобретения AI это слово тоже пихали куда попало, делая никому не нужные вещи. Теперь пихают AI. Возможно, у меня получилось то же самое.

Я убеждён и знаю на своём опыте, что если ты отсмотришь ВСЕ вопросы (именно вопросы, к задачам иные подходы), то ты будешь отвечать лучше большинства кандидатов. Обычно за время заполнения пробелов можно настолько преисполниться, что будешь отвечать на технические вопросы лучше интервьюера. Это также может работать как минимум потому, что ты тратишь кучу недель на подготовку к собеседованию, а интервьюера вырвали с его продуктовых задачек, чтобы тебя помучить часок. Мало кто регулярно перечитывает базу.

На PrepBro.ru можно отмечать галочками каждый вопрос, на который ты знаешь ответ и "закрыть" профессию. Мне нравятся ассоциации отметки галочек с закрытием квеста в варкрафте. Закрыл все вопросы и пошёл откликаться.
На моках есть лайки! Лидерборда пока нет, но данные уже собираем. Также есть лайки на комментариях (комменты, решения, мемы, помощь другим). Всё это собирается, вероятно будет какой-то лидерборд. С одной стороны я очень хочу это дело как-то развивать, стимулировать. Призы разыгрывать? Пока не знаю, что-нибудь придумаю!

С другой стороны, если моя цель - помочь людям найти работу, то бесконечно держать на сайте их скорее вредно, я же не Duolingo. Чем быстрее и качественнее они смогут подготовиться - чем лучше, а такими лидербордами я могу наоборот толкать их бесконечно учиться, хотя пора бы давно уже пойти и начать проходить собеседования. Отчасти потому я и не хочу добавлять достижения на сервис (закрыть все 24 профессии xd)

Итого, что мы имеем?

  • Список вопросов и задач с собеседований на разные профессии с тэгами и оценками
  • Прогресс-бары закрытия профессий
  • Полное покрытие ответами от нейронки (и там уже даже начали люди свои ответы писать!!!)
  • Мок-собеседования с другими бойцами
  • Тестовое собеседование (как экзамен в институте, пул вопросов по заданным настройкам)

А что планируем сделать?

  • Парсинг вакансий с hh
    • Тэги с вакансий по профессиям, топ
    • Ключевые слова с вакансий по профессиям, топ
    • Саммари вакансий
    • Каналы, куда будут пулятся свежие вакансии с саммари (куда, если всё блокируют? хотелось бы сделать источником монетизации в том числе, хотя бы на оплату LLM). Или в личку отправлять?
    • Страничка с трендами и статистикой hh, ключевыми словами для прохождения ATS
  • ATS для анализа резюме, как на hh, рекомендации по улучшению. Это уже совсем не бесплатно, если делать это хорошо. Возможно этот кусок вынесу за пэйволл (3? 5? 10 раз бесплатно дать?)
  • Система менторов, списки, честные цены, отзывы
  • Добавить авторизацию через другие сервисы (яндекс? макс? Я пока не решил. Не понятно, как сделать систему моков с удобной связью для обоих участников)
  • Что-нибудь на алгосы (моки?), возможно на отдельные языки (SQL, отдельно от аналитики?)
  • Дизайн систем. Возможно сделать даже отдельный раздел с разбором популярных паттернов. Моки по System Design?

А вот что точно не планирую, так это:

  • Автоотклик. Могут забанить, сделать руками 200 откликов в день (лимит hh) - не большая проблема, за неделю уже обычно вакансии
  • Закрывать за пэйволл базовый функционал, он должен быть бесплатным, иначе смысла в сервисе нет

Продвижение

Я ещё не начал активно продвигаться, но есть несколько идей.

  1. Я думаю написать статейки на хабре, VC, пикабу и так далее. Попробую нагнать трафика оттуда, взяв за основу эту статью. У меня есть ещё пара статей - как я делал другой стартап, как я закрыл ещё 2 других стартапа и как я учился вайбкодить фронт, будучи бэком (спойлер: это было и правда сложно! Фронт за пару промптов не делается, если это не простенький лендинг). Я напишу эти статьи точно сюда. Но вот чтобы идти туда, у меня есть мысли либо нанять на помощь редактора, либо что-то ещё придумать. Если вы можете мне помочь или у вас есть кто-то знакомый, кто за денежку / респект / бартер готов вычитать мои текста или помочь с оформлением - буду очень благодарен.
  2. Моему другу попался рилс в шортсах, где девочка показывала, как она загрузила резюме на какой-то сайт и он выдал рекомендации по прохождению ATS. Я пощупал эти сервисы и понял, что я могу сделать лучше. Думаю поискать на том же hh себе рилсмэйкера или маркетолога, которому буду платить за эти рилсы. Либо попробовать сгенерировать всё это. Опыта у меня в этой сфере 0, я даже рекламу подобную не вижу. Точно также - любые советы, консультации, всё это очень нужно.

Встаёт логичный вопрос - а зачем это всё, если денег не приносит и не факт что будет? Мне просто нравится этот проект. Возможно он вообще кучу времени простоит и можно будет монетизировать хотя бы за счёт тг-канала. Либо на личный тг-канал попробовать привлечь немного людей. Было бы приятно монетизировать через сетку тг каналов под каждую профессию, но в условиях блокировки телеги и ухода рекламодателей появляется вопрос - а есть ли в этом смысл? Но и куда переходить пока не понятно. Всё блокируют, а альтернативы пока не предвидится. После первого штрафа за рекламу на ютубе многие рекламодатели стали бежать с иностранных платформ. А куда переходить из отечественного? Где бы вам было бы приятнее связываться с человеком для моков с ним? Как вообще связать тех, кто не пользуется VPN с тем, кто не ставит MAX? Ответа на это у меня пока нет.
Так что пока буду рекламировать без финансовых целей.

Бонус: как claude положил мне прод

Для деплоя я использую Dokku (спасибо ребятам из чата индихакеров! Давно перешёл на него и очень доволен!). В чём суть - он позволяет деплоить создавая новый контейнер рядом со старым. Если новый контейнер проживает 60 секунд, то старый убивается и новый остаётся один. 0 секунд простоя, идеально! Но есть ньюансы.
Во время активного ответа на вопросы я пытался параллелить на машине с минимальными ресурсами. Инженерно это простая задача, но я хотел делать это большими, но быстрыми батчами, чтобы оперативно отслеживать косяки. Я попросил claude ускорить этот процесс. Он увеличил размер пула у БД, что в целом было ок, но при этом он параллельно стал создавать много тасок - тоже в целом ок. В итоге это привело к тому, что в процессе создания тасок сервер начал умирать. У него и так конфигурация минимальная, но в этом случае этого было не достаточно. Как оказалось, каждый раз, когда клод делал dokku run, это была не просто команда, а отдельный контейнер под его выполнение. В итоге всё повисло намертво, таски не успевали выполняться. После перезагрузки сервера таски редиса догоняли и вызывали OOM практически сразу - тут уже постгря выедала остатки ОЗУ для поддержания коннектов. И передеплоить для внесения правок тоже было нельзя - там просто не было ОЗУ для создания второго контейнера сервиса. В общем - было весело!

Спасибо всем, кто прочитал этот лонгрид. Приглашаю на prepbro.ru, попробуйте, я старался! Про редизайны и фронт расскажу отдельной статьёй. Ну и кому интересно, можете на мой тг канал подписаться

1 комментарий 👇
Павел Стрюк Синьор бэкенд автор 7 часов назад

А почему в заголовке тире меняется на длинное? Сейчас меня будут обвинять в ИИ-генерированном контенте ;)

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб