> DOU
senior
BigTree1082.4k USDBackend Engineer
format:Remotetype:Contractcompany:Outsource
pythonfastapipydanticasyncioqdrantdockeraws
whisperreactceleryperformance testing
test task:no
> full description
Основна інформація
- Вимоги до досвіду: 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 речення про найближчий до семантичного пошуку, медіа-пайплайнів чи медичного ПЗ досвід, який у вас був. Посилання на один репозиторій чи систему, якою ви пишаєтеся, краще за супровідний лист