Основна інформація * Вимоги до досвіду: 3+ роки комерційного досвіду з Python у продакшені; практичний досвід семантичного / векторного пошуку * Англійська: B1+ або вище (технічна документація та письмова комунікація англійською; інтерв’ю із замовником англійською, щоденна комунікація із замовником йде переважно через нас) * Зайнятість: Full-time * Тривалість: ~3 місяці на першу версію (реалістичний план — близько 64 робочих днів), з високою імовірністю продовження — друга фаза вже обговорюється із замовником * Формат: повністю віддалено * Старт: одразу після проходження всіх етапів
Проект та команда * Домен / індустрія: медична онлайн-освіта — європейська вебінарна навчальна платформа для лікарів * Опис: семантичний пошуковий рушій по навчальному контенту платформи. Лікар ставить питання звичайною мовою — система за менш ніж 2 секунди повертає точні місця у джерелах («відео модуля 1, час 14:32», «сторінка 12 документа»), ранжовані за релевантністю. Ключова особливість: система принципово не генерує текст — жодної генеративної моделі у відповідях. У клінічному контексті згенерований текст є регуляторним ризиком, тому архітектура свідомо source-first: тільки пошук, кожен результат простежується до затвердженого джерела. Ви будуєте те, чим багато «AI-продуктів» лише називаються — точний, обґрунтований, аудитований пошук без проблеми галюцинацій. Обсяг роботи: пайплайн обробки контенту (транскрипція відео з таймкодами, парсинг документів, семантичний чанкінг, ембедінги, фонові задачі зі статусами та відновленням після збоїв), пошуковий API з суворою ізоляцією даних між курсами та fallback-підказками без генерації, авторизація. Без UI у цій фазі — постачається headless REST API під платформу замовника. Детальне ТЗ вже написане: критерії приймання по кожному модулю, контракти API, нефункціональні вимоги з конкретними цифрами * Склад команди: ви — єдиний розробник з повним end-to-end ownership * Часовий пояс: Європа (замовник у CET) * Вік проекту: новий — розробка з нуля за готовим ТЗ
Технології та інструменти * Backend: Python 3.11+, FastAPI, Pydantic, async; sentence-transformers (all-MiniLM-L6-v2, локально), Whisper (ASR на етапі обробки контенту), PyMuPDF, python-pptx * Frontend: у цій фазі відсутній * Бази даних: Qdrant (векторна БД; окрема колекція на курс, ізоляція доводиться інтеграційним тестом) * Cloud: AWS EU (ECS Fargate, S3, AWS Batch GPU)
Що ми очікуємо Обов’язково: * впевнена робота з FastAPI (або Flask/Django з готовністю перейти на FastAPI), async, Pydantic * Практичний досвід семантичного / векторного пошуку — будь-що з: Qdrant, Weaviate, pgvector, Milvus, Elasticsearch kNN, sentence-transformers; вмієте обговорювати чанкінг і trade-offs релевантності з власної практики * Docker у щоденній роботі * Самоорганізованість: ведете власний план за фіксованим списком модулів і звітуєте за прогрес
Буде плюсом (будь-який пункт підвищує пріоритет): * Whisper чи інший ASR; пайплайни обробки аудіо/відео * React (пошуковий віджет — імовірна наступна фаза) * Системи фонових задач (Celery, RQ, arq) і надійність довготривалих пайплайнів * Performance / load testing (ціль «p95 < 2 с» — контрактна вимога) * Досвід у healthcare чи інших регульованих доменах
Юридичні та фінансові умови * Випробувальний термін: 1 місяць * Юридичне оформлення: співпраця тільки через ФОП 3-ї групи, та тільки на гривневий рахунок. Якщо у вас ФОП ще не відкритий, ми надамо необхідну консультацію та допомогу з його відкриттям * Компенсація: гросс — самостійна оплата податків з отриманої суми на ФОП: 5% єдиний податок + 1% військовий збір + ЄСВ(1902.34 грн/міс). Надаємо бухгалтерську допомогу зі звітами * Модель співпраці: контракт з фіксованою погодинною ставкою (Hourly rate). Оплата здійснюється за фактично затрекані години, тож соціальний пакет (оплачувані відпустки та лікарняні) на даній позиції у клієнта не передбачений
Робочий процес та умови * Графік: здебільшого з 10:00 до 18:00 (за Києвом), але за домовленістю з клієнтом можливий гнучкий підхід * Обладнання: за потреби компанія забезпечує робочим ноутбуком * Облік часу: по вимогах клієнта, використовується програма (Hubstaff або Upwork Tracker), яку потрібно встановити на ноутбук. Якщо проект передбачає видачу робочого ноутбука — трекер буде встановлений там; в іншому разі рекомендуємо створити окремий профіль користувача на власному ноутбуці для робочих завдань. Програма фіксує активність клавіатури/мишки та робить скріншоти (раз на 10 хв). Це формальність для Hourly-моделі, і не забирає гнучкості: якщо ви відійшли від ноутбука, через 20 хв неактивності трекер зупиниться сам. Ви можете самостійно видаляти скріншоти, якщо на них потрапила якась особиста інформація (разом з ними видалиться відповідний 10-хвилинний інтервал часу). Якщо забули увімкнути трекер, можна звернутися до менеджера, він додасть вручну. Мікроменеджменту зі сторони клієнта немає, дані переглядаються лише у разі критичних питань щодо перформансу
Процес відбору * Знайомство: Ви пишете нам на Telegram: ми збираємо всі необхідні дані про ваш досвід * Технічне інтерв’ю: 30–60 хв, англійською (обговорення вашого досвіду та системного дизайну навколо цього проекту: як чанкувати 8-годинний транскрипт? як довести ізоляцію курсів? Без leetcode) * Інтерв’ю з клієнтом: 15–60 хв, англійською (знайомство та обговорення проекту)
Як відгукнутися * Найшвидший спосіб відгукнутися на вакансію — написати нам на Telegram: t.me/bigtree108 * Якщо ви не користуєтеся Telegram, надсилайте резюме на пошту: khrystyna_shulepa@bigtree108.com * Додайте 2–3 речення про найближчий до семантичного пошуку, медіа-пайплайнів чи медичного ПЗ досвід, який у вас був. Посилання на один репозиторій чи систему, якою ви пишаєтеся, краще за супровідний лист