• Файл

Igor

Python-програміст

Вік:
25 років
Місто проживання:
Дніпро
Готовий працювати:
Дистанційно

Контактна інформація

Шукач вказав: ТелефонЕл. пошту

Прізвище, контакти та світлина доступні тільки для зареєстрованих роботодавців. Щоб отримати доступ до особистих даних кандидатів, увійдіть як роботодавець або зареєструйтеся.

Завантажений файл

Версія для швидкого перегляду

Це резюме розміщено у вигляді файлу. Ця версія для швидкого перегляду може бути гіршою за оригінал резюме.

Ігор Теплов
Python Backend Developer
Варшава, Польща · [відкрити контакти](див. вище в блоці «контактна інформація») · [відкрити контакти](див. вище в блоці «контактна інформація»)
[відкрити контакти](див. вище в блоці «контактна інформація») · github.com/IgorTeplov

КОРОТКО ПРО СЕБЕ
Python backend розробник із 3+ роками комерційного досвіду. Створюю мультитенантні CRM та внутрішні бізнес-системи на
Django / Django REST Framework, зокрема платформу телефонії на власному Asterisk. Спроєктував і реалізував архітектуру
database-per-tenant із динамічним створенням баз даних та маршрутизацією запитів. Працюю на всьому циклі — від моделі даних
та API до асинхронних сервісів, черг задач на Celery, розгортання в Docker, налаштування поштових серверів, DNS і моніторингу.
Впевнений досвід асинхронної розробки (asyncio, httpx, Django Channels) та звичка писати тести — 1200+ тестів на поточній
платформі. Щодня використовую LLM-інструменти розробки (Claude Code) як у коді, так і в інфраструктурних задачах.

ТЕХНІЧНІ НАВИЧКИ
Мови та основа: Python 3.10+, SQL, Bash, JavaScript (базово)
Фреймворки: Django, Django REST Framework, Django Channels, Daphne/ASGI, Sanic
Асинхронність та конкурентність: asyncio, httpx, asyncio.gather / семафори, асинхронні генератори та streaming-відповіді, WebSockets,
threading (базово)
Черги задач та брокери: Celery (Beat, кілька черг, планування задач), Kafka, Redis, cron
Бази даних: PostgreSQL, pgbouncer, маршрутизація між кількома БД, оптимізація ORM (select_related / prefetch_related, усунення N+1),
Redis (кеш, брокер)
Тестування: pytest, pytest-django, unit- та інтеграційні тести, власний tenant-aware тестовий харнес, мокування зовнішніх API через
окремі endpoint'и з демоданими
Інфраструктура: Linux (Ubuntu/Debian), Docker та Docker Compose, nginx, systemd, адміністрування VPS (DigitalOcean, Hetzner, Contabo),
firewall, керування доступами по SSH
Моніторинг: Prometheus, Grafana, Grafana Alloy, Loki (розгортання та інтеграція)
Мережі та протоколи: SIP / VoIP (Asterisk PBX, PJSIP realtime, ARI / AMI, WebRTC, SIP-транкінг), SMTP/IMAP (кастомне налаштування
Postfix для розсилок), DNS (MX, TXT, A, CNAME), SSL/TLS (certbot, автоматичні dry-run перевірки поновлення, термінація на nginx),
HTTP
Хмара: AWS S3 (великі обсяги синхронізації, завантаження через токен-авторизацію), Google BigQuery
LLM-розробка: Ollama, OpenAI та OpenRouter API, провайдер-агностична абстракція inference, керування моделями з Hugging Face,
RAG на FAISS, embedding-моделі, стрімінг токенів, робота з промптами та шаблонізація
CI/CD: GitHub Actions (базові workflow), контейнеризоване розгортання
Проєктування: Шарова сервісна архітектура (доменні бібліотеки з окремим сервісним шаром, відділеним від HTTP та точок входу
задач), декларативний директивний дизайн API, рішення задокументовані як ADR, принципи SOLID, патерни проєктування
AI-інструменти: Claude Code, розширення Claude для VS Code; власна платформа self-hosted LLM із розподіленим inference (див.
Власні проєкти)

ДОСВІД РОБОТИ

Python Backend Developer
Global Leaders Skills Sp. z o.o. (B2B) · Віддалено / гібрид · вересень 2025 – теперішній час
Єдиний backend-розробник мультитенантної CRM-платформи з власним стеком телефонії на Asterisk та realtime-комунікацією.
Спроєктував і реалізував архітектуру database-per-tenant: кожен тенант працює на ізольованій базі PostgreSQL, застосунок
динамічно маршрутизує запити та створює нові бази під час роботи.
Побудував увесь backend на Django + DRF — ~82 тис. рядків Python в екосистемі з 30+ Docker-сервісів, датасет ~1 млн записів.
Створив декларативний шар API: JSON-директиви описують серіалізатори та запити, а Python-виклики резолвляться через
явний whitelist-реєстр замість import_string — це закриває шлях до виконання довільного коду, який відкрила б наївна
реалізація.
Написав токенізатор мови запитів, що компілює граматику фільтрів (AND / OR / NOT, дужки, пріоритет операторів) у Django Q-
об'єкти методом рекурсивного спуску, із захистом від зловмисного вводу через ліміти глибини вкладеності, кількості токенів та
вузлів AST.
Реалізував ядро тенантної маршрутизації — конфігурований multi-database router із правилами по застосунках, передачею
тенантного контексту та контролем міграцій.
Реалізував асинхронний realtime-шар на Django Channels / WebSockets поверх Daphne — живі оновлення та події дзвінків на
клієнті.
Розгорнув і налаштував власний Asterisk PBX (PJSIP), що тримає SIP-транки до зовнішнього провайдера номерів і дає платформі
повний контроль над дзвінками — маршрутизація вхідних/вихідних та запис розмов.
Побудував шар телефонії на PJSIP realtime через ODBC: endpoint'и, авторизації, AOR та вихідні реєстрації зберігаються в
PostgreSQL і провіжняться з Django — SIP-акаунти для кожного тенанта створюються динамічно, без хардкоду в конфігах.

Свідомо тримав діалплан тонким — дзвінки одразу передаються в ARI Stasis-застосунок, де Django вирішує маршрутизацію для
користувача та надсилає події стану дзвінка в дашборд у реальному часі; паралельно використовував AMI для операцій control
plane (reload, статуси реєстрацій).
Реалізував софтфон у браузері через SIP-over-WebSocket / WebRTC поверх вбудованого HTTP-сервера Asterisk.
Реалізував супервізію дзвінків: керівник може непомітно прослухати активний дзвінок продажу або перейти в режим whisper і
підказувати сейлзу так, щоб клієнт цього не чув.
Контейнеризував увесь стек із шаблонами конфігів, що рендеряться на старті (підстановка env-змінних, пошук ODBC-драйвера
під архітектуру), і покрив шар телефонії інтеграційними тестами на реальному тестовому акаунті провайдера.
Побудував пайплайни задач на Celery з Beat-плануванням та кількома окремими чергами, що розділяють критичні за часом
задачі та довгі фонові процеси; брокер працював у конфігураціях як на Redis, так і на Kafka.
Спроєктував трекінг Kafka-задач для at-least-once доставки: payload_id, який інжектує продюсер, робить повторні доставки
дедуплікованими, а невдалі задачі — доступними для перегляду й перезапуску з Django Admin; стан живості консьюмерів
відображається явно.
Задокументував архітектурні рішення у форматі ADR (мультитенантність, автентифікація, Kafka, масштабування, телефонія) та
провів повний аудит безпеки backend'у з класифікацією знахідок за severity в доменах auth/JWT, ізоляції тенантів, динамічного
API та інфраструктури.
Впровадив pgbouncer для вирішення проблеми переповнення пулу з'єднань при одночасних підключеннях до багатьох
тенантних баз.
Написав 1200+ тестів у 72 тестових модулях (pytest / pytest-django) на власному tenant-aware тестовому харнесі — включно з
інтеграційними тестами проти реальних зовнішніх сервісів та окремими endpoint'ами демоданих для відтворюваного мокування
API.
Розгорнув та інтегрував стек моніторингу — Prometheus, Grafana, Grafana Alloy і Loki — у Docker для метрик та централізованого
логування.
Відповідав за розгортання та експлуатацію: reverse proxy на nginx, SSL/TLS через certbot з автоматичною перевіркою
поновлення, оркестрація контейнерів через Docker Compose, базові workflow у GitHub Actions.
Стек: Python, Django, DRF, Django Channels, Celery, Redis, Kafka, PostgreSQL, pgbouncer, WebSockets, Asterisk / PJSIP / ARI / WebRTC,
Docker, nginx, Prometheus, Grafana, Loki

Python Backend Developer / Automation Expert
A Company That Sells Everything · Віддалено · червень 2022 – вересень 2025 · 3 роки 4 місяці
Реалізовував внутрішні продукти та дата-інфраструктуру повного циклу. Працював переважно самостійно, у пікові періоди керував 1–
2 розробниками.

Indigo — мультитенантна CRM
Побудував CRM для команди 20+ осіб з обсягом 500k+ записів та 90k+ контактів за моделлю database-per-tenant із динамічним
створенням баз даних.
Оптимізував запити ORM (select_related / prefetch_related, усунення N+1) та додав кешування, щоб списки й пошук
залишалися швидкими на великих обсягах.
Реалізував кастомний канал надсилання SMS через фізичний пристрій, інтегрований у комунікаційний флоу CRM.
Стек: Django, DRF, PostgreSQL, Redis, cron, nginx.

FB4S — пайплайн обробки великих обсягів даних (канадський клієнт)
Написав повністю асинхронний інструмент (asyncio + httpx, паралельні передачі з обмеженням конкурентності) для
вивантаження та щотижневої синхронізації ~1 ТБ стиснених сирих даних з бакета AWS S3.
Побудував шлях експорту 1 ТБ даних у форматі CSV до Google BigQuery, що уможливило аналітичні запити по всьому датасету.
Забезпечив постійну актуальність пошукового корпусу через регулярний пайплайн синхронізації.

Quantula — конфігуратор продукції та внутрішня система управління
Розробив сайт і внутрішню систему управління товарами для 300+ світильників із точними технічними параметрами.
Реалізував динамічну генерацію PDF — специфікації під конкретні кастомізації товару.

Автоматизація та інфраструктура
Побудував 20+ автоматизацій воронок продажів, поєднуючи Make з власними Python-сервісами.
Адміністрував 6+ VPS-серверів (DigitalOcean, Hetzner, Contabo): доступи, Docker, firewall, діагностика та аналіз логів.
Керував DNS-записами доменів (MX, TXT, A, CNAME), налаштовував MX-сервери на Postfix для вихідних розсилок.
Стек: Python, Django, DRF, PostgreSQL, Redis, asyncio, httpx, AWS S3, BigQuery, Docker, nginx, cron, Postfix, Linux

ВЛАСНІ ПРОЄКТИ

Self-hosted платформа для роботи з LLM із розподіленим inference
Python, Sanic, asyncio, Ollama, OpenAI / OpenRouter API, FAISS, WebSockets
Повністю асинхронна платформа-менеджер чатів для роботи з мовними моделями на локальних, self-hosted та хмарних бекендах —
досліджував абстракцію провайдерів, стрімінг, розподілений inference та retrieval-augmented generation.
Побудував увесь backend на Sanic з наскрізною async-архітектурою — жодних блокуючих викликів у шляху обробки запиту.
Спроєктував ядро навколо абстракції провайдерів: генерація, ембединги та переклад описані як можливості, відокремлені від
бекенду виконання — ту саму задачу може виконати локальний Ollama, віддалений inference-хост або хмарний API (OpenRouter,
OpenAI). Додавання нового провайдера не потребує змін у шарі чатів.

Зробив провайдера і модель переналаштовуваними для кожного чату на льоту — розмова може змінити бекенд чи модель без
перезапуску застосунку та втрати стану сесії.
Реалізував стрімінг токенів у реальному часі через асинхронні генератори у streaming HTTP-відповіді — за єдиним інтерфейсом
як для локальних, так і для хмарних провайдерів.
Спроєктував шар розподіленого inference: на віддаленій машині піднімається окремий Sanic-сервіс, прокинутий через ngrok із
власною авторизацією, що дозволяє винести генерацію на окремий GPU-хост. Сервіс не є простим проксі до Ollama — він керує
життєвим циклом віддалених моделей, перемикає заздалегідь завантажені моделі на льоту та обслуговує як LLM, так і
embedding-моделі.
Реалізував RAG поверх векторного індексу FAISS з ембедингами, які обслуговує той самий inference-шар.
Побудував шарову систему керування промптами: окремий розділ керує переліком системних промптів; кожен чат комбінує
обраний системний промпт, власні доповнення та блоки промптів асистента з налаштовуваним порядком — усе зберігається в
директорії чату.
Додав фонове завантаження моделей із Hugging Face з трансляцією прогресу в UI через WebSockets.
Реалізував опційний пайплайн перекладу (Google Translate): можна перекладати запит користувача перед передачею в модель
та відповідь моделі після завершення генерації — щоб комфортно користуватися локальними моделями будь-якою мовою.
Розробив власний frontend-інтерфейс для керування чатами, вибору моделей та налаштувань.

CRM-ПЛАТФОРМИ
Практичний досвід роботи з комерційними CRM поза власними системами — HubSpot і Pipedrive: налаштування, побудова воронок і
робочих процесів, адміністрування та інтеграція через їхні REST API.

ОСВІТА

Дніпровський національний університет імені Олеся Гончара
Магістр, Комп'ютерні та інформаційні системи безпеки / Information Assurance
Бакалавр, Комп'ютерні та інформаційні системи безпеки / Information Assurance

МОВИ
Українська — рідна · Російська — вільно · Англійська — B1 (Intermediate)

Схожі кандидати

Усі схожі кандидати

Кандидати у категорії


Порівняйте свої вимоги та зарплату з вакансіями інших підприємств: