Что мы делегируем независимым разработчикам: PR вместо собеседования, Claude Code приветствуется
Конкретные бакеты задач, ждущие контрибьюторов: OpenData-адаптеры, ML-эксперименты, frontend, performance, тесты. Наше единственное "собеседование" — ваш первый pull request. AI-assisted код приветствуется — мы сами ежедневно пишем с Claude Code.
Что мы делегируем независимым разработчикам: PR вместо собеседования, Claude Code приветствуется
В предыдущей статье мы объявили, что открываем LEX AI как open source. Теперь конкретика: какие задачи в бэклоге, как они оформлены, почему единственное "собеседование" у нас — первый pull request, и почему мы любим Claude Code.
PR вместо собеседования
Мы не верим в LeetCode, HackerRank и трёхчасовые собесы с whiteboard-алгоритмами. Это тестирует способность решать задачи под стрессом — а не способность доставлять рабочий код в реальную кодовую базу.
Наш фильтр проще: возьмите issue с меткой good-first-issue или help-wanted, сделайте PR, пройдите review. Это и есть наше "собеседование". Только с реальным результатом, который остаётся в проде — и с оплатой, если задача в прайс-листе.
Если PR прошёл — мы уже знаем, что:
- Вы читаете чужой код и попадаете в стиль проекта
- Вы пишете TypeScript без костылей и
any-кастов - Вы локально тестируете изменения до push
- Вы ревьюите себя до того, как отправить
- Вы спокойно обсуждаете в PR-комментариях
Больше нам ничего не нужно. Дальше — контракт, ставка, объём.
Мы сами пишем с Claude Code. AI-assisted PR'ы приветствуются
Мы не против AI-написанного кода. Наоборот — сами ежедневно отправляем в прод десятки PR'ов, написанных вместе с Claude Code. Наш CI/CD включает Claude-агентов, которые автоматически чинят падающие билды на каждом push в main. Так что ваш workflow с Cursor, Claude Code, Copilot или Codex — не проблема, а скорее плюс.
Что мы проверяем:
- Вы понимаете каждую строку, которую отправляете — даже если её сгенерировал агент
- Вы локально протестировали изменения (
docker compose up, не "агент сказал что норм") - Вы не вставляете generic React-код, не вписывающийся в архитектуру
- Вы удаляете мёртвый код и placeholder-комментарии перед commit
LLM-помощник — такой же инструмент, как IDE. Он не делает вас худшим инженером и не делает лучшим — он только ускоряет того, кем вы уже являетесь.
Бакет 1 — OpenData-адаптеры и ETL
У нас интегрированы 15+ государственных источников: EDRSR, Верховная Рада, НАПК, OpenReyestr, OpenSanctions, GLEIF, ICIJ Offshore Leaks, HIBP, NVD, INTERPOL, World Bank. Нужны следующие:
- Европейские суды: rechtspraak.nl (Нидерланды, частично), justice.cz (Чехия), domstol.se (Швеция), curia.europa.eu (Суд ЕС)
- Регуляторные реестры: FINMA (Швейцария), BaFin (Германия), AFM (Нидерланды), CSSF (Люксембург)
- LATAM: DNRPA (Аргентина), JusBrasil (Бразилия), InfoTec (Мексика)
- Sanctions delta-sync: инкрементальная синхронизация OFAC с диффами вместо полного download
Типичная задача — 3–5 дней:
- Написать адаптер в
services/opendata-importers/importers/ - Добавить checkpoint + resume logic (base class уже есть)
- Написать тест с fixture
- Добавить в scheduler конфиг
Стек: Python 3.11 async или Node.js, PostgreSQL COPY, shared base/checkpoint/http_client/ip_pool уже готовы.
Бакет 2 — ML эксперименты
Самое интересное и дорогое. Ищем контрибьюторов на:
- LoRA fine-tuning jurisdiction-specific моделей (гражданская, уголовная, административная) на 1–10M аннотированных пар Q&A
- Custom embeddings — fine-tune BGE-M3 на парах
(юридический тезис, релевантное решение)из нашего retrieval-лога - Citation verification — отдельная модель, проверяющая действительно ли цитируемая статья кодекса содержит заявленный текст
- Router model — классификатор "какой tool вызвать" на основе запроса, заменяющий текущий rule-based gateway
Стек: HuggingFace, PyTorch, vLLM, optional Vertex AI / SageMaker. GPU выделяем из credit-пула Google Cloud / AWS.
Оплата: фикс + бонус за достижение метрики (например, >X% preference rate vs baseline).
Бакет 3 — Frontend и UX
lexwebapp — React 19 + Vite + TailwindCSS + Zustand + TanStack Query. Ждут:
- Evidence panel refactor — результаты поиска должны рендериться в правой панели, не в чате (несколько issues открыто)
- Дифф-вьюер для судебных решений — side-by-side сравнение двух решений с подсветкой схожих частей
- Timeline view — хронология дел по одной стороне (ФОП / ООО)
- Dashboard для юрфирм — многопользовательский view на дела команды
- Accessibility audit — WCAG AA для всех ключевых страниц
Сложность — от 3-дневной задачи (timeline view) до 2-недельного проекта (dashboard).
Бакет 4 — Performance и infra
- PostgreSQL оптимизация — база 1.17 TB, некоторые запросы 5–10 с; нужно партиционирование по годам для таблицы
cases - pgvector HNSW tuning — 65M векторизованных решений, оптимизация ef_search vs recall
- Redis cache layer — фронт-кэш для тяжёлых агрегаций статистики дел по юрисдикциям
- Docker image slimming — некоторые образы 2 GB, нужен multi-stage + distroless
- CI/CD ускорение — local runner собирает монорепо 12 мин, цель — 4 мин
Бакет 5 — Тесты и документация
- Playwright E2E для критических flows: регистрация → Diia-auth → поиск → экспорт → платёж
- Jest coverage для
services/в mcp_backend (сейчас ~45%, цель — 75%) - OpenAPI spec для HTTP API всех трёх MCP-серверов
- Architecture diagrams в Mermaid в
docs/ - API examples на Python / cURL / JS для разработчиков
Это идеальные задачи для первого PR. Низкий риск, быстрый review, мы всегда на связи.
Что мы НЕ делегируем
Чтобы не было непониманий:
- Продуктовые промпты — живут в закрытом
secondlayer-core - Бизнес-логику биллинга — Monobank callback handlers, credit deduction, subscription tier resolution
- Anti-abuse эвристики — rate-limiting стратегии, поведенческий анализ
- Прямой контакт с клиентами — enterprise-юрфирмы, гос-партнёры
- Юридические решения в контенте — что модель отвечает по чувствительным темам (это вместе с юристами)
Всё остальное — честная игра.
Как начать
- Клонируйте
github.com/overthelex/secondlayer, запуститеdocker compose -f docker-compose.local.yml --env-file .env.local up -d - Посмотрите issues с метками
good-first-issue,help-wanted,bounty - Напишите комментарий в issue, что берёте задачу (чтобы не дублироваться)
- Сделайте PR — ревью в течение 48 часов
- Получите оплату — UAH банком или USDT, если задача с прайсом
Для ML-, OSINT- или performance-задач — рекомендуем сначала открыть Discussion, чтобы синхронизироваться по подходу. Иначе риск сделать PR, который мы попросим переделать.
FAQ
Q: А если я новичок и никогда не делал PR в open source? A: Есть Бакет 5 (тесты и документация). Первый PR на дополнение README или новый Playwright-тест — отличная точка входа. Поможем с ревью и советом.
Q: Как с оплатой?
A: Перед тем как брать задачу, проверьте есть ли у неё метка bounty или paid. Если да — сумма в описании. Иначе это community-contribution без оплаты, но с упоминанием в CHANGELOG и credit в README.
Q: Можно взять большую ML-задачу как первый вклад? A: Лучше нет. Начните с задачи на 1–3 дня, чтобы мы оба посмотрели как вам работается с нашим кодом. Дальше — всё ваше.
Q: Подпишете NDA?
A: Если задача из secondlayer-core — да, простой mutual NDA. Для open-source задач NDA не нужен.
Открытое репо: https://github.com/overthelex/secondlayer Issues для контрибьюторов: https://github.com/overthelex/secondlayer/labels/good-first-issue Discussions: https://github.com/overthelex/secondlayer/discussions Контакт: vladimir@legal.org.ua
Пишите PR, а не cover letter.