[{"data":1,"prerenderedAt":222},["ShallowReactive",2],{"project-ru-frontend-jobs-radar":3,"recommendation-mention-sources":160},{"id":4,"title":5,"body":6,"category":125,"context":126,"cover":127,"coverAlt":128,"demo":129,"description":130,"extension":131,"featured":132,"locale":133,"meta":134,"navigation":135,"order":136,"path":137,"published":135,"repository":129,"results":138,"role":148,"seo":149,"slug":150,"stack":151,"stem":157,"year":158,"__hash__":159},"projects\u002Fru\u002Fprojects\u002Ffrontend-jobs-radar.md","Frontend Jobs Radar: канал вакансий, где каждую проверяет дешёвая AI-модель",{"type":7,"value":8,"toc":110},"minimark",[9,14,18,29,33,36,40,45,48,51,55,64,68,71,74,78,81,85,98,102],[10,11,13],"h2",{"id":12},"задача","Задача",[15,16,17],"p",{},"В 2026 году поиск работы на Vue выглядел так: одни и те же вакансии на разных площадках, устаревшие объявления, мошенники и реклама, а ещё вакансии, где Vue упомянут один раз, а работа совсем про другое. Хотелось автоматизировать сам поиск и читать только то, что стоит прочитать.",[15,19,20,21,28],{},"В тех же источниках много вакансий на React, Angular и другие frontend-стеки, которые не подходят мне, но могут подойти кому-то ещё. Поэтому у проекта два выхода: узкая личная лента для моего поиска и открытый Telegram-канал ",[22,23,27],"a",{"href":24,"rel":25},"https:\u002F\u002Ft.me\u002Ffrontendjobsradar",[26],"nofollow","Frontend Jobs Radar"," с frontend-вакансиями в целом.",[10,30,32],{"id":31},"моя-роль","Моя роль",[15,34,35],{},"Личный проект, который я начал в сентябре 2026 года, после ухода из inSales. Спроектировал, сделал и поддерживаю его сам: источники, фильтрация, AI-проверки, публикация, база данных и релизы.",[10,37,39],{"id":38},"что-я-сделал","Что я сделал",[41,42,44],"h3",{"id":43},"сбор-вакансий-и-поиск-первоисточника","Сбор вакансий и поиск первоисточника",[15,46,47],{},"Сервис на TypeScript работает в Cloudflare Workers с базой D1 и по расписанию собирает вакансии с карьерных страниц компаний и ATS-платформ, джоб-бордов и из Telegram. Telegram-сборщик — отдельный воркер: он читает 20 настроенных каналов, хранит сессию в зашифрованном виде, учитывает пагинацию и лимиты и умеет продолжать работу после прерывания.",[15,49,50],{},"Сам сбор оказался меньшей частью работы. Одна и та же вакансия встречается на нескольких площадках, часто через агрегаторы, поэтому сервис ищет исходное объявление, убирает дубли и сохраняет ссылку на источник. То, что не успевает обработаться за один запуск, уходит в надёжные очереди и не теряется.",[41,52,54],{"id":53},"два-фильтра-для-разных-задач","Два фильтра для разных задач",[15,56,57,58,63],{},"Правил по ключевым словам не хватило. В настоящей frontend-вакансии может не оказаться ожидаемых слов, а нерелевантный пост может где-то упомянуть frontend. Поэтому перед публикацией вакансию проверяет ",[22,59,62],{"href":60,"rel":61},"https:\u002F\u002Ftypesafe.ai\u002F",[26],"JEV"," — небольшая и дешёвая модель от TypeSafe AI для таких решений «да или нет». Для открытого канала вопрос такой: это действительно frontend-вакансия и в ней достаточно подробностей? Для моей личной ленты вопрос другой: стоит ли она моего времени? Вакансия, которая не подходит мне, может пригодиться кому-то в канале.",[41,65,67],{"id":66},"посты-на-английском-в-рамках-бюджета","Посты на английском в рамках бюджета",[15,69,70],{},"Если вакансия прошла проверку, отдельная языковая модель пишет короткий пост на английском: роль, стек, локация, формат работы, зарплата и ограничения по найму, если они есть в объявлении, и ссылки на вакансию и первоисточник. Перед публикацией текст проходит автоматические проверки: корректная разметка Telegram, английский язык и только те факты, которые есть в источнике.",[15,72,73],{},"На AI для открытого канала есть жёсткий бюджет — $3 в календарный месяц. Каждый вызов заранее резервирует максимальную стоимость, а потом резерв закрывается по фактическому расходу, который подтвердил провайдер. Если результат вызова неизвестен, резерв остаётся, и запрос не повторяется вслепую. Когда бюджет заканчивается или пост не проходит проверку, вакансия ждёт в очереди и не уходит в канал необработанным текстом.",[41,75,77],{"id":76},"публикация-без-дублей","Публикация без дублей",[15,79,80],{},"Посты выходят по расписанию. Бот умеет редактировать уже опубликованное сообщение, например если вакансию закрыли, и присылает мне ежедневные и еженедельные отчёты. Если Telegram не подтвердил доставку, сервис не отправляет пост повторно: дубль в открытом канале хуже, чем задержка. Изменения базы данных сначала прогоняются на свежей резервной копии, а на время релиза расписания останавливаются и потом восстанавливаются.",[10,82,84],{"id":83},"результат","Результат",[86,87,88,92,95],"ul",{},[89,90,91],"li",{},"С момента запуска 20 сентября 2026 года открытый канал публиковал новые вакансии в 32 днях из 34 — посчитано по публичному архиву канала 23 октября 2026 года. Оба пропуска пришлись на воскресенья.",[89,93,94],{},"Одна проверка JEV на ~2 000 входных токенов стоит около $0,00008, то есть примерно восемь центов за тысячу проверок. Поэтому проверять моделью можно каждую вакансию — с обычной LLM это было бы слишком дорого.",[89,96,97],{},"Фильтрация не идеальна: иногда в канал всё ещё попадает не frontend-вакансия, и я продолжаю настраивать источники и вопросы к модели.",[10,99,101],{"id":100},"где-посмотреть","Где посмотреть",[15,103,104,105,109],{},"Канал открытый: ",[22,106,108],{"href":24,"rel":107},[26],"t.me\u002Ffrontendjobsradar",". Исходный код закрыт.",{"title":111,"searchDepth":112,"depth":112,"links":113},"",2,[114,115,116,123,124],{"id":12,"depth":112,"text":13},{"id":31,"depth":112,"text":32},{"id":38,"depth":112,"text":39,"children":117},[118,120,121,122],{"id":43,"depth":119,"text":44},3,{"id":53,"depth":119,"text":54},{"id":66,"depth":119,"text":67},{"id":76,"depth":119,"text":77},{"id":83,"depth":112,"text":84},{"id":100,"depth":112,"text":101},"Личные проекты","Личный проект","\u002Fimages\u002Fwork\u002Ffrontend-jobs-radar\u002Fchannel-post.webp","Пост в канале Frontend Jobs Radar: вакансия Senior Frontend Engineer (Vue.js) в Dyflexis в Гааге с описанием роли, требованиями, датой публикации и ссылками на вакансию и источник",null,"Сервис на TypeScript и Cloudflare Workers собирает frontend-вакансии, проверяет каждую с помощью JEV и публикует короткие посты на английском в открытый Telegram-канал. Новые вакансии выходили в 32 днях из 34 с запуска.","md",false,"ru",{},true,4,"\u002Fru\u002Fprojects\u002Ffrontend-jobs-radar",[139,142,145],{"value":140,"label":141},"32 из 34","дней с новыми вакансиями в открытом канале, 20 сентября – 23 октября 2026",{"value":143,"label":144},"≈$0,00008","стоит одна проверка JEV на ~2 000 входных токенов",{"value":146,"label":147},"20","Telegram-каналов в сборщике, помимо карьерных страниц, ATS-платформ и джоб-бордов","Единственный разработчик — от сбора источников и фильтрации до AI-интеграции, публикации и эксплуатации",{"title":5,"description":130},"frontend-jobs-radar",[152,153,154,62,155,156],"TypeScript","Cloudflare Workers","Cloudflare D1","AI Integration","Telegram Bot API","ru\u002Fprojects\u002Ffrontend-jobs-radar","Сентябрь 2026 – сейчас","2b1tyUXg4Ju0otOP1KtCJLkpmnR37npk-sq2rBPdf5w",[161,172,177,192,202,207,212,217],{"stem":162,"name":163,"date":164,"featured":112,"published":135,"mentions":165},"recommendations\u002Fandrey-stikheev","Andrey Stikheev","2026-09-08",[166,169],{"project":167,"quote":168},"product-image-editor","Among his most notable projects was a sophisticated browser-based image editor built with TypeScript and Fabric.js, now used by thousands of merchants.",{"project":170,"quote":171},"abandoned-carts","He also developed the frontend for a paid abandoned-cart product and contributed to the production migration from Vue 2 to Vue 3.",{"stem":173,"name":174,"date":175,"featured":129,"published":135,"mentions":176},"recommendations\u002Fdaniil-churakov","Daniil Churakov","2026-08-27",[],{"stem":178,"name":179,"date":180,"featured":119,"published":135,"mentions":181},"recommendations\u002Fdmitry-sadovsky","Dmitry Sadovsky","2026-08-22",[182,185,187,190],{"project":183,"quote":184},"visual-storefront","For years he was the driving force behind our visual storefront editor — a large, complex application where merchants build their online stores.",{"project":167,"quote":186},"It became the tool merchants use to design product images right inside the admin panel — the kind of component companies usually buy rather than build.",{"project":188,"quote":189},"image-editor","What impressed me most was the infographic editor he built essentially from scratch: a full canvas-based graphic editor with artboards, shapes, text styling, templates, and undo\u002Fredo history, powered by an editor core he developed himself.",{"project":170,"quote":191},"Our abandoned carts functionality — with multi-channel customer messaging, communication history, and analytics — was largely his work, from UI down to the details of how requests are cancelled and states stay in sync.",{"stem":193,"name":194,"date":195,"featured":196,"published":135,"mentions":197},"recommendations\u002Fegor-fedkin","Egor Fedkin","2026-08-31",1,[198,200],{"project":167,"quote":199},"Today, the tool is actively used by around 3,000 users.",{"project":170,"quote":201},"It has already generated approximately twice the revenue needed to cover its development costs.",{"stem":203,"name":204,"date":205,"featured":129,"published":135,"mentions":206},"recommendations\u002Femmanuel-stephen","Emmanuel Stephen","2026-10-11",[],{"stem":208,"name":209,"date":210,"featured":129,"published":135,"mentions":211},"recommendations\u002Fevgeny-lonshakov","Евгений Лоншаков","2026-09-21",[],{"stem":213,"name":214,"date":215,"featured":129,"published":135,"mentions":216},"recommendations\u002Froman-gorbachev","Роман Горбачев","2026-09-17",[],{"stem":218,"name":219,"date":220,"featured":129,"published":135,"mentions":221},"recommendations\u002Fvladimir-bedarev","Bedarev Vladimir","2026-09-16",[],1793195987361]