К содержимому
Все кейсы

Боты

Remote Jobs Hub

Агрегатор удалённых вакансий из Telegram

PythonFastAPITelethon (MTProto)ARQPostgreSQL + pgvectorAlembicaiogram 3Next.jsDocker Compose
6
сервисов
5 + 2
приложений и пакета

Проблема

Вакансии и заказы живут в десятках Telegram-каналов вперемешку с шумом, дублями и перепостами одного и того же оффера в пяти местах. Читать это вручную — час в день ради двух релевантных строк.

Система

Шесть сервисов в одном compose: MTProto-коллектор на Telethon читает только whitelisted-источники, rule-based префильтр отсекает очевидный шум до LLM, экстрактор на Anthropic structured outputs раскладывает пост в нормализованные поля (зарплата, формат, стек), дедупликация работает в два слоя — точная и семантическая через pgvector. Каталог отдаётся пользователю как Telegram Mini App, модерация источников — в отдельной админке. Авторизация Mini App проверяется по HMAC-SHA256 от initData на бэкенде: фронт никогда не передаёт telegram_id напрямую.

Роль

Соло-разработка: архитектура, все шесть сервисов, схема данных, CI.

Результат

Монорепо из 5 приложений и 2 общих пакетов, тесты гоняются на sqlite без поднятого Postgres, Alembic-миграция проверяется вживую в CI. Экстрактор по контракту не выдумывает факты — неизвестные поля остаются null (extra="forbid" в Pydantic-схеме).