Мне надоело вручную искать работу и я написал mvp бот-агрегатор вакансий в телеграм

Привет! Меня зовут Иван. Я написал бот Ready2Work, который собирает вакансии с тематических телеграм каналов. Расскажу о том что сподвигло, к чему пришел и что в планах.

Предистория.

Компания где я работал закрылась. И так как у меня нет накоплений в несколько десятков миллионов, чтобы жить не работая, нужно было искать работу.

Да, я вновь активировал анкету на hh, начал смотреть вакансии какие мне там попадались, но большенство найденных вакансий мне не подходили по ряду параметров и захотелось расширить круг поиска.

И где же еще можно найти много вакансий? Конечно же в телеграм каналах с этими самым вакансиями. Но, как вы понимаете, листать сотни каналов с вакансиями это тоже не выход. Поэтому я решил написать агрегатор. Да, агрегаторов полно, но нормальных агрегаторов по вакансиями в телеграме, я не нашел.

Как искать и расширяться?

Чтобы что-то найти, нужно было сначала что-то собрать. Для начала я написал бот-сборщик всего что постится на канал с вакансиями. Смысла собирать старые вакансии не было, поэтому собираются только новые сообщения. Все сообщения бережно складывают и обрабатываются чтобы определить, является ли сообщение вакансией или это реклама курсов, ставок и прочих рекламных дел. Затем эти сообщения индексируются, чтобы потом можно было легко найти нужное.

И казалось бы все готово. Но я знал только пару каналов с вакансиями, а этого мало. Поэтому кроме анализа сообщений с вакансиями бот мониторит и рекламу других каналов с вакансиями. И база начала разрастаться. В начале я добавил пару крупных «игроков», а дальше уже дело техники и время ожидания.

На данный момент мониторится около 500 каналов с вакансиями. В день добавляется более 1000 вакансий.

Наработки по поиску.

Сейчас в боте кроме поиска еще есть и подписка на то что пользователь искал. Т.е. если пользователь искал «фронтенд» и подписался на эту выдачу, то ему будут приходить уведомления, если вакансия с такой формулировкой появится. А т.к. в боте работает морфологической поиск, так что волноваться за род, число и падеж не стоит.

Поиск сделан так, что сначала пользователю показываются вакансии за день, за неделю, за 2 недели и за месяц. Т.е. вначале всегда показывается самое свежее.

При этом постоянно мониторится статус вакансии и если она удаляется с канала источника, то вакансия так же пропадает и из поискового индекса.

Проблемы.

Не обошлось и без проблем. Одна из главных это как раз корректная фильтрация сообщений, т.к. не всегда алгоритм может распознать 100% является ли сообщение на канале рекламным постом или вакансией, т.к. алгоритм основывается на ряде триггеров в тексте. Решение конечно же есть — это подключать нейронки и учить.

Успешность MVP.

Так как это mvp продукта, то дальнейшая судьба бота зависит конечно же от пользователей. Зайдет ли он им или нет.

Метрикой успешности mvp я выбрал это кол-во подписок на вакансии и их просмотр. Кол-во пользователей не самый главный показатель в данной тематике.

Зашло? Что дальше?

А дальше расширять функционал поиска. Т.к. сейчас нет фильтрации вилки зарплат, хотя эти данные тоже собираются.

Очень хочется поработать с нейронкой, чтобы с бОльшей уверенностью отделять рекламу от вакансий.

Опять же есть план нейронкой собирать группы схожих вакансий. Чтобы при поиске «фронтенд разработчик» находились вакансии и «frontend developer», «js программист» и т.п.

Но ведь воровать грешно…

Наверное некоторые уже подумали о том, что я использую контент других для своих целей, не отдавая ничего в замен? Не совсем так, при просмотре полного текста вакансии указывается с какого ресурса она была взята и конечно же ссылка на оригинал сообщения.

В заключение

Чтобы не потеряли, вот вам еще раз ссылка на бота. Расскажите в комментариях, как вам? Что понравилось, что не очень? Буду очень признателен если напишите о фичах которых не хватает в боте.

0
47 комментариев
Написать комментарий...
Dave

Напишите в личку в телеге: @revealed_dave.
Есть пара мыслей. 

Тот самый админ джс, проджект и продакт Джобс каналов.

Ответить
Развернуть ветку
Dave

@Ivan Koffka мне там написали в личку. Это вы?
Просто уточняю,а то всякое бывает

Ответить
Развернуть ветку
Ivan Koffka
Автор

Если вы про гуся с розой, то да )

Ответить
Развернуть ветку
Павел Демидов

Интересная штука.
1. Можно выделять названия вакансий жирным.
2. Когда нажимаешь "Показать еще", чтобы в самый конец не перебрасывало.
3. "Опять же есть план нейронкой собирать группы схожих вакансий" - это было бы просто замечательно.

Ответить
Развернуть ветку
Ivan Koffka
Автор

1. Думаю да. Сделаем.
2. Тут уже особенности телеграма. Но подумаю как можно сделать хорошо.
3. Все зависит от интереса пользователей к проекту. Ведь это не законченный продукт, а только mvp.

Ответить
Развернуть ветку
котейка мохнатотрехцветная

спасибо! понравилось очень: показывает дату публикации вакансии, показывает подборку за неделю, показывает канал, откуда взято. нет привязки к одной категории, ее легко сменить! буду рекомендовать всем!

Ответить
Развернуть ветку
Ivan Koffka
Автор

Большое спасибо за отзыв!
Так же буду признателен за конструктивную критику. Что не понравилось или чего не хватает.

Ответить
Развернуть ветку
Alexander Sigmanor

Так а работу всё таки нашёл?

Ответить
Развернуть ветку
Ivan Koffka
Автор

Да! Со своей задачей бот справился.

Ответить
Развернуть ветку
Denis Mayorov

Привет. Как парсишь вакансии? Ты токенизируешь и ищешь по ключам? И как отделяешь рекламу другого канала от предложения увеличить член?

Ответить
Развернуть ветку
Ivan Koffka
Автор

Алгоритм проверяет уже сам канал по различным триггерам. Если канал про вакансии, то то добавляется в список сборщика. Если есть сомнения, т.е. не все триггеры отработали, то мне отправляется сообщения на ручную модерацию. Но обычно отрабатывает на 95%.

Ответить
Развернуть ветку
Denis Mayorov

Прикольно. А вакансии ты кластеризуешь или у тебя релевантный поиск?

Ответить
Развернуть ветку
Ivan Koffka
Автор

Сохраняю в базу с доп.информацией + индексация с последующим релевантным поиском.

Ответить
Развернуть ветку
Denis Mayorov

Красава. Отличное решение. Не знаю, как монетизируют телеграм каналы, но кто-то должен тебе заплатить🙂

У спортмастера, к слову, все на эластике, они обещают дохуя платить и премии в 50% годовых. Расскажи, если устроишься.

Ответить
Развернуть ветку
Ivan Koffka
Автор

Спасибо )
Монетизация в основном рекламой или ограничением доступа к фичам.
ФИчи ограничивать не буду, а вот насчет рекламы, подумаю как интегрировать рекламу, чтобы она не была бесящей.

Ответить
Развернуть ветку
Борис Васильев

Не совсем в тему, но может посоветуете, как разместить свои вакансии в 50 городах  - бесплатно, или за разумные деньги (на HH.RU мне не по карману).

Ответить
Развернуть ветку
Руслан Ніколаєнко

если вы ИТшник, тогда в Линкедин все можно сделать, обновите свой профиль

Ответить
Развернуть ветку
Борис Васильев

Не ИТшник, но попробую, спасибо.

Ответить
Развернуть ветку
Павел Демидов

Смотря что за вакансия. Так то можно в вк по профильным пабликам раскидать (относительно недорого или бесплатно).

В том же вк, в городских сообществах, часто в разделе Обсуждения есть вакансии, там все бесплатно. Особенно актуально для небольших городов.

Юлу можно попробовать . Более актуально для МСК, Питера и миллионников. Дешевле чем хх, авито и т.д., но и отклик похуже.

Ответить
Развернуть ветку
Борис Васильев

Спасибо. Пробовал. Отклики совсем не о чем.

Ответить
Развернуть ветку
Андрей Петушков

Попробовал перейти по ссылке. Робот не позволил — сообщение — к сожалению вы не состоите в чате.
Нажал название сайт откуда ссылка выскочило сообщение - истёк срок ссылки.

Ответить
Развернуть ветку
Ivan Koffka
Автор

Как я понимаю по ссылке в тексте вакансии? Тут уже как автор вакансии указал.

Ответить
Развернуть ветку
Андрей Петушков

Посмотрите приложение - Trovit Работа. Там ссылки на «первоначальные сайты» работает. Может все же дело в другом? )

Ответить
Развернуть ветку
Ivan Koffka
Автор

Одно дело на сайты, а другое на закрытые каналы. Суть в том, что если канал приватный, то вы в него не попадете без первоначальной ссылки. Ссылка периодически меняется админом канала и публикуется по желанию админа.

В данном случае, скорее всего, вы как раз попытались перейти на закрытый канал.

Ответить
Развернуть ветку
Олег

"И так как у меня нет накоплений в несколько десятков миллионов, чтобы жить не работая, нужно было искать работу." Это ты пошутил?) 

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Руслан Ніколаєнко

хм, Иван, вы бота который будет обновлять цены по запросу на сайте +телеграм сможете сделать?

Ответить
Развернуть ветку
Ivan Koffka
Автор

Смотря где цены. А так, конечно все возможно.

Ответить
Развернуть ветку
Сергей Леопольдович

Разве в каналы не добавляют запрет ботам добавляться в число участников?

Ответить
Развернуть ветку
Ivan Koffka
Автор

Конечно. Но ведь добавляется один юзер-бот.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Ivan Koffka
Автор

Пользуйтесь в удовольствие ;)

Ответить
Развернуть ветку
Татьяна Кузнецова

Такое впечатление что символы типа # не глотает, c# developer ищется только слово developer в c# вообще не ищется, надо экранировать как то символы 

Ответить
Развернуть ветку
Ivan Koffka
Автор

Больше спасибо за замечание. Исправлю.

Ответить
Развернуть ветку
Станислав Александров

ввел DBA получил какую-то муть, закрыл. на hh все проще.. :)

Ответить
Развернуть ветку
Ivan Koffka
Автор

Спасибо за отзыв.
А что это? Я поискал на той же rabota.ru и там ничего такого нет. В поисковиках ничего толком по теме вакансий с таким запросов не выдается. Может стоит попробовать другую формулировку?

Ответить
Развернуть ветку
Ivan Koffka
Автор
Ответить
Развернуть ветку
Станислав Александров

🤷‍♂️ яндекс и росработу никогда не любил

Ответить
Развернуть ветку
Serg Wan

Уважаемый, Иван!)
Я — не сноб, но после заголовка «ПредИстрория», которое со школы помню, как предыстория, сразу вся остальная инфа провалилась. Пишу просто по своим ощущениям. Обязательно вникну в то, о чем Вы пишите. 

Ответить
Развернуть ветку
Ivan Koffka
Автор

Ок

Ответить
Развернуть ветку
Serg Wan

...вдогонку. Почему мы можем писать ботов, а следовательно задавать им определенные правила, и спокойно игнорируем правила русского языка?!

Ответить
Развернуть ветку
Clif

Понравился бот! Хорошая разработка.

Ответить
Развернуть ветку
Ivan Koffka
Автор

Спасибо!

Ответить
Развернуть ветку
teamultii

О, круто!! а на сколько сложно было писать такого бота? и где вы писали этого бота?

Ответить
Развернуть ветку
Ivan Koffka
Автор

Как минимум пришлось посидеть подумать как сделать )
А так оценить сложность не смогу.
Не понял вопрос "где вы писали этого бота".
Вы имеете ввиду на какой языке? Python. Т.е. бот не в конструкторе собран, а написан условно "с нуля".

Ответить
Развернуть ветку
Елена Белькова

Добрый день, а он ещё работает?

Ответить
Развернуть ветку
Златковский

похоже уже не работает

Ответить
Развернуть ветку
44 комментария
Раскрывать всегда