# Эдуард / gajsin: AI Product Engineer / Automation & Integrations

Портфолио: https://gajsin.tech/
Каталог проектов: https://gajsin.tech/projects
Количество проектов: 18.
Локация: Уфа, Россия (UTC+5).
Контакт: https://t.me/gajsinn; gsngsn@list.ru.
GitHub: https://github.com/gajsin.

## Профиль

Проектирую и собираю цифровые продукты через AI-assisted development: от бизнес-логики и архитектуры до интеграций, тестирования и деплоя. Основной рабочий процесс строю вокруг Codex и coding agents; отвечаю за постановку задач, контекст, проверку кода и конечный результат.

Собираю backend и frontend, Windows-утилиты, Telegram-ботов и Mini Apps, расширения браузера, мультимодальные AI-системы, парсеры, товарные фиды и автоматизацию рабочих процессов. Работаю с внешними API, распознаванием речи, обработкой изображений и видео, базами данных и фоновыми задачами.

Основной стек: Codex, Coding Agents, OpenAI API, Python, FastAPI, TypeScript, React, Svelte, Tauri, Rust, Node.js, Express, aiogram, Telegraf, PySide6, PostgreSQL, Redis, SQLite, ClickHouse, Docker, Whisper, Chrome MV3, Парсинг / ETL, XML / Excel.

Парсинг входит в мои основные услуги. Собираю данные из каталогов и API, нормализую товары и варианты, контролирую полноту данных, формирую XML, JSON или Excel для магазина и настраиваю регулярные обновления. Примеры: Faberlic Parser, Carro, OEM Bike Parts и Wildberries & Ozon Scraper.

## Как использовать эти данные

Этот файл содержит проверенные сведения из портфолио и служит основным источником для подготовки откликов на вакансии и фриланс-заказы. Выбирайте только проекты, которые относятся к задаче заказчика. Не придумывайте показатели, сроки, имена клиентов, командный состав или функции, которых нет в описании. Для публичного исходного кода указана ссылка. У приватных проектов адрес репозитория скрыт.

## Проекты

## Приложения для Windows

### Dicta

Страница: https://gajsin.tech/project/dicta

HTML-презентация: https://gajsin.tech/presentations/dicta.html

Репозиторий: https://github.com/gajsin/dicta

Год: 2025.

Тип: Приложения для Windows; Собственный продукт.

Роль: Fullstack / Desktop.

Статус: Production.

Что это: Голосовой ввод в любом приложении Windows — с историей и настройкой обработки

Задача: Сделать диктовку доступной поверх любого окна Windows: нажать горячую клавишу, произнести мысль и получить готовый текст в активном поле без ручного копирования.

Что сделал: Разработал приложение на Tauri 2, Rust и Svelte 5. Оно захватывает аудио, отправляет его выбранному сервису распознавания, при необходимости приводит текст к нужному стилю и вставляет результат через системный буфер обмена. В новой версии появились локальная история с поиском, настройки провайдеров, светлая и тёмная темы, русская и английская локализации.

Возможности: Диктовка без смены окна — Глобальная клавиша запускает запись, а готовый текст попадает в то приложение, где пользователь работал.; Четыре режима текста — От сырой расшифровки до делового стиля: пользователь выбирает степень коррекции пунктуации и формулировок.; Выбор API-провайдера — Можно подключить собственные ключи Groq, OpenAI, OpenRouter или Polza.ai для распознавания и обработки.; История и оформление — Локальный поиск по исходному и готовому тексту, управление сохранением истории, темы, акценты и две локализации.

Сложность: Сохранить фокус исходного приложения при вызове плавающего индикатора, согласовать системный хоткей с записью и вставкой и дать пользователю контроль над историей и API-ключами.

Результат: Доступное для установки Windows-приложение с четырьмя режимами обработки текста, системным треем и локальной историей диктовок.

Архитектура: Windows: глобальная клавиша, микрофон, системный буфер и активное поле ввода → Rust / Tauri 2: запись, ресемплинг, команды и плавающий HUD → STT и LLM API: распознавание и выбранный режим коррекции → Svelte 5: история, провайдеры, настройки и локализация.

Технологии: Tauri 2, Rust, Svelte 5, TypeScript, cpal, Whisper API, Windows API.

### Signal

Страница: https://gajsin.tech/project/signal

HTML-презентация: https://gajsin.tech/presentations/signal.html

Год: 2025.

Тип: Приложения для Windows; Собственный продукт.

Роль: Backend / Desktop / AI.

Статус: Production.

Что это: Персональный Windows-ассистент с голосовым контуром реального времени

Задача: Создать персонального голосового помощника для Windows с параллельным доступом через десктопное приложение и Telegram-бота к единой базе данных и логике.

Что сделал: Спроектировал асинхронный сервер на FastAPI с голосовым контуром (wake word → live audio streaming → Whisper STT → LLM streaming → TTS queue). Разработал Intent Router для разграничения команд (задачи, память, заметки) и клиент на PySide6.

Возможности: Голосовой пайплайн — Wake word → live streaming → частичный транскрипт → streaming-ответ → последовательный TTS с поддержкой отмены (Barge-in).; Память с подтверждением — Новые знания проходят стадию кандидатов и сохраняются в базу только после подтверждения пользователем.; Intent Router — Классификация намерений: задачи, напоминания, таймеры, память или свободный диалог.; Тонкий desktop, честный сервер — PySide6 UI не содержит секретов; FastAPI сервер выступает единым источником правды.

Сложность: Обеспечение сверхнизкой задержки голосового ответа, реализация механизма Barge-in (мгновенная отмена речи ассистента при перебивании) и верификация новых фактов перед сохранением в память.

Результат: Полноценная рабочая станция персонального голосового управления с живым журналом диагностических событий и единой памятью.

Архитектура: Windows Desktop: PySide6 UI · voice loop · wake word · TTS player → HTTP + WebSocket + SSE communication layer → FastAPI backend: AssistantCore, IntentRouter, TurnCtrl, сервисы → SQLite storage · Polza.ai: LLM, Whisper STT, TTS, vision.

Технологии: Python 3.11, FastAPI, PySide6, aiogram 3, SQLite, Whisper, Polza.ai.

### Avel

Страница: https://gajsin.tech/project/avel

HTML-презентация: https://gajsin.tech/presentations/avel.html

Репозиторий: https://github.com/gajsin/avel

Год: 2026.

Тип: Приложения для Windows; Собственный продукт.

Роль: Desktop / системные интеграции.

Статус: Production.

Что это: Одна Windows-утилита для буфера обмена, файлов, оформления и мониторов

Задача: Объединить повседневные системные операции Windows в одном быстром приложении, не заставляя пользователя открывать несколько утилит.

Что сделал: Собрал интерфейс на React и Tauri 2, а системные возможности реализовал в Rust через Win32, COM, WMI и DDC/CI. Буфер, недавние файлы, темы, рабочий стол и яркость работают в одной локальной среде.

Возможности: Буфер и скриншоты — Событийный перехват текста и изображений, поиск, избранное и быстрый просмотр по пробелу.; Недавние файлы — Отслеживание работы Проводника, миниатюры Shell и быстрый возврат к файлам и папкам.; Тема и рабочий стол — Переключение оформления и обоев, управление видимостью значков и панели задач.; Яркость — Управление внешними дисплеями через DDC/CI и встроенными экранами через WMI.

Сложность: Корректно работать с несколькими мониторами и системным состоянием, не терять данные буфера и возвращать исходные настройки Windows при выходе.

Результат: Windows-приложение с установщиком, локальным SQLite-хранилищем, глобальными горячими клавишами и работой без сетевых запросов.

Архитектура: React / TypeScript: единый интерфейс шести сценариев → Tauri / Rust: команды, события и системные API Windows → SQLite: локальная история, настройки и восстановление состояния.

Технологии: Tauri 2, Rust, React 19, TypeScript, Win32 / COM, SQLite, DDC/CI.

### maska oem

Страница: https://gajsin.tech/project/maska

HTML-презентация: https://gajsin.tech/presentations/maska.html

Исходный код: приватный репозиторий.

Год: 2026.

Тип: Приложения для Windows; Собственный продукт.

Роль: Desktop / обработка изображений.

Статус: Completed.

Что это: Пакетная очистка фотографий мотозапчастей от водяного знака

Задача: Убрать повторяющийся знак OEM PaRTS и QR-код с партии однотипных фотографий, сохранив логотип производителя, номер детали и оригиналы.

Что сделал: Сделал автономную Windows-утилиту на Python и Tkinter. Оператор выбирает папку, видит прогресс, может остановить обработку и открыть результат. Алгоритм рассчитан на конкретный шаблон изображений 1096 × 822.

Возможности: Пакетная обработка — Одна папка PNG, JPG или WebP обрабатывается за запуск с понятным прогрессом.; Сохранность исходников — Готовые изображения попадают в отдельную папку; совпадающие имена получают новый суффикс.; Управление процессом — Остановка после текущего фото, счётчик ошибок и журнал проблемных файлов.

Сложность: Очистить фиксированные области, не затронув полезные подписи, и обеспечить безопасную пакетную работу при ошибках отдельных файлов.

Результат: EXE работает локально без установки Python и интернета. Оригиналы не перезаписываются, результаты сохраняются с новыми именами, ошибки попадают в журнал.

Архитектура: Tkinter: выбор папки и управление обработкой → Python / Pillow: маска и восстановление областей → Processed: отдельные файлы результата и журнал ошибок.

Технологии: Python, Tkinter, Pillow, NumPy, PyInstaller.

## Веб-приложения

### MUTE

Страница: https://gajsin.tech/project/mute

HTML-презентация: https://gajsin.tech/presentations/mute.html

Год: 2026.

Тип: Веб-приложения; Собственный продукт.

Роль: Fullstack / AI.

Статус: Production.

Что это: Из записей звонков — в разборы, общую картину и рекомендации с источниками

Задача: Помочь руководителю понять, зачем звонят клиенты, чем заканчиваются разговоры и что требует внимания. Каждый вывод должен вести к конкретному звонку и доступному фрагменту расшифровки.

Что сделал: Разработал full-stack приложение на React 19 и Express: распознавание аудио и структурированный ИИ-разбор через Polza, обзор обращений, факторы риска и рекомендации по набору звонков. Подключил прямую загрузку в приватный Vercel Blob, сохранение этапов обработки и экспорт в пять форматов. Рабочий сайт доступен на mute.gajsin.tech.

Возможности: Разбор с источниками — Запрос клиента, итог, договорённости и следующие шаги. От цитаты можно перейти к диалогу и исходной расшифровке.; Общая картина обращений — Распределения, категории рисков и рекомендации руководителю с переходами к подтверждающим звонкам.; Продолжение обработки — Сохранённые расшифровки и этапы, остановка и повтор отдельной записи. После возврата в набор браузер продолжает обработку.; Приватность и экспорт — Личные записи в private Blob, доступ через HttpOnly cookie. Отчёты в PDF, автономном HTML, JSON, Markdown и CSV.

Сложность: Согласовать параллельные изменения в Blob через ETag, исключить сохранение устаревших ответов после остановки и обеспечить продолжение обработки с сохранённого этапа. Связать выводы с источниками и защитить личные наборы без регистрации.

Результат: Работающий веб-сервис речевой аналитики с личными наборами до шести файлов по 25 МБ и подготовленным примером из 50 записей. В примере — 28 содержательных разговоров, 15 факторов и три рекомендации; это демонстрационные материалы, а не измерения коммерческой эффективности.

Архитектура: React 19 + Vite + React Router: загрузка, обзор, разбор и звонки → Express / Node.js: HTTP-шаги обработки, контроль доступа и общие контракты → Polza: распознавание речи и структурированный LLM-разбор → Vercel private Blob: аудио, сохранённые этапы и согласованность через ETag → Puppeteer / Chromium: серверный PDF из общего HTML отчёта.

Технологии: React 19, Vite, Node.js, Express, Polza, Vercel Blob, Puppeteer.

Открыть сайт: https://mute.gajsin.tech/

### Mood News Grid

Страница: https://gajsin.tech/project/mood-news-grid

HTML-презентация: https://gajsin.tech/presentations/mood-news-grid.html

Репозиторий: https://github.com/gajsin/Mood-News-Grid

Год: 2026.

Тип: Веб-приложения; Собственный продукт.

Роль: Fullstack / AI.

Статус: MVP.

Что это: Реальные новости в пяти эмоциональных стилях с сохранением фактов

Задача: Показать, как тон меняет восприятие новости, оставляя читателю исходный текст, издателя и ссылку на источник.

Что сделал: Разработал адаптивную ленту на Next.js: 12 актуальных публикаций из RSS, шесть рубрик и пять режимов чтения. Оригинал и адаптация выводятся рядом; версии сохраняются у пользователя в браузере.

Возможности: Лента 3 × 4 — Две свежие публикации из каждой из шести рубрик; остальные материалы доступны отдельно.; Пять настроений — Нейтрально, радостно, грустно, иронично или удивлённо — с независимым состоянием генерации.; Факты под контролем — Запрос к LLM требует сохранять имена, числа, даты и причинно-следственные связи.; Источник рядом — Оригинальный текст, адаптация и переход к издателю остаются в одном окне.

Сложность: Обновлять ленту без устаревшего кэша, выполнять параллельные запросы на разные настроения и ограничивать рерайт фактической точностью.

Результат: Работающее веб-демо с реальными RSS-источниками, сравнением текста и независимой генерацией настроений.

Архитектура: RSS-источники: сбор и выбор актуальных материалов → Next.js: лента, категории и окно сравнения → LLM API: адаптация стиля по строгой JSON-схеме → JSON / опционально Postgres: данные статей; localStorage: версии читателя.

Технологии: Next.js, React, TypeScript, RSS, LLM API, PostgreSQL.

Открыть сайт: https://mood.gajsin.tech/

## Telegram

### STRATA

Страница: https://gajsin.tech/project/strata

HTML-презентация: https://gajsin.tech/presentations/strata.html

Год: 2025.

Тип: Telegram; Собственный продукт.

Роль: Fullstack / AI.

Статус: Production.

Что это: AI-ассистент для управления жизнью в Telegram Mini App

Задача: Создать единый мобильный интерфейс внутри Telegram для управления личным органайзером (задачи, привычки, расходы, заметки) с помощью голосовых и текстовых ИИ-команд.

Что сделал: Разработал Telegram Mini App на React 18 + PocketBase. Подключил OpenAI API со streaming-ответами, который распознаёт намерения пользователя и генерирует 15+ системных команд для управления данными.

Возможности: AI-исполнитель команд — OpenAI API генерирует системные команды вида ///CREATE_TASK///, исполняемые в PocketBase.; Голосовой ввод — Запись и транскрипция голосовых сообщений через Whisper.; Умные задачи и финансы — Парсинг относительных дат, категорий расходов и трекинг привычек с fuzzy-поиском.

Сложность: Точный разбор временных конструкций естественного языка («напомни завтра в 15:30») и поддержание высокого FPS в интерфейсе Telegram Webview.

Результат: Удобный карманный ассистент, объединяющий управление задачами, трекер привычек и финансовый учёт в одном чате.

Архитектура: Telegram Mini App: React SPA (чат, задачи, финансы, привычки) → Express backend: auth HMAC, AI chat stream, Whisper transcribe → PocketBase в Docker: SQLite, auth, хранилище.

Технологии: React 18, TypeScript, PocketBase, Express 5, OpenAI API, Whisper, Telegram Mini App.

Telegram Bot: https://t.me/appstrata_bot

### Depicta

Страница: https://gajsin.tech/project/depicta

HTML-презентация: https://gajsin.tech/presentations/depicta.html

Год: 2025.

Тип: Telegram; Собственный продукт.

Роль: Backend / AI.

Статус: Production.

Что это: Telegram-бот генерации AI-стикеров с оплатой через Stars

Задача: Создать Telegram-бота для мгновенного превращения селфи пользователя в брендированный стикерпак с автоматической монетизацией.

Что сделал: Разработал сервис на TypeScript (Telegraf 4 + Sharp + Polza.ai). Бот принимает селфи, накладывает стилистические AI-маски, вырезает фон, нарезает PNG 512×512 и формирует готовый стикерпак.

Возможности: AI Face Fusion — Смешение фото пользователя со стилями и эмоциональными масками.; Пайплайн Sharp — Автоматическое удаление фона, кадрирование и нарезка 512×512.; Платежи Telegram Stars — Оплата прямо в чате с автоматическими возвратами при сбоях.

Сложность: Сохранение сходства лица при нейрогенерации, авто-удаление сложных фонов и безопасная обработка платежей Telegram Stars с возвратом при сбоях.

Результат: Работающий сервис с генерацией стикерпака менее чем за 60 секунд и встроенной системой микрооплаты.

Архитектура: Telegraf 4: wizard-сцены, инвойсы Stars → AI & Медиа: Polza.ai генерация, Whisper STT, Sharp image processor → Хранилище: SQLite3.

Технологии: TypeScript, Telegraf 4, Polza.ai, Sharp, SQLite, Telegram Stars, Whisper.

Telegram Bot: https://t.me/depicta_bot

### MotoPartsBot

Страница: https://gajsin.tech/project/motopartsbot

HTML-презентация: https://gajsin.tech/presentations/motopartsbot.html

Год: 2024.

Тип: Telegram; Клиентский проект.

Роль: Backend / Integration.

Статус: Completed.

Что это: Автоматизация продаж мотозапчастей в Telegram и Avito

Задача: Автоматизировать подбор и продажу мотозапчастей по артикулу клиентских запросов одновременно с трех складских систем в условиях высокой нагрузки.

Что сделал: Написал асинхронный бэкенд на Python (FastAPI + aiogram 3). Реализовал параллельный опрос API МойСклад, базы удаленного склада и японского поставщика, построив детерминированную FSM оформления заказа.

Возможности: Мультискладской поиск — Параллельные запросы к МойСклад, удалённому складу и поставщику из Японии.; LLM-извлечение контактов — Извлечение ФИО, телефона и адреса из свободного текста клиентов.; Единая FSM заказа — Корзина, подтверждение наличия и автоматическое создание заказа в МойСклад.

Сложность: Сведение разнородных ответов API к единому прайс-листу и обработка вебхуков Avito параллельно с Telegram в общей базе данных.

Результат: Бот автоматизировал первичный поиск по трём источникам и создание заказов в МойСклад, сократив ручную работу менеджера при подготовке ответа клиенту.

Архитектура: Каналы: aiogram 3 (Telegram) + Avito Webhooks + FastAPI REST → Данные: PostgreSQL, Redis → Интеграции: МойСклад API, Japan Import API.

Технологии: Python, FastAPI, aiogram 3, PostgreSQL, Redis, МойСклад API, OpenAI API.

### Refinery Daily

Страница: https://gajsin.tech/project/refinery-daily

HTML-презентация: https://gajsin.tech/presentations/refinery-daily.html

Год: 2025.

Тип: Telegram; Клиентский проект.

Роль: Backend / AI.

Статус: Completed.

Что это: Автопубликация новостных дайджестов нефтегазовой отрасли

Задача: Автоматизировать ежедневный сбор, отбор, переписывание и верстку профессионального B2B-дайджеста для нефтегазового Telegram-канала.

Что сделал: Построил конвейер на Python (Aiogram 3 + Telethon + OpenAI API). Бот мониторит 37+ RSS-источников, производит 4-уровневую дедупликацию, переписывает текст в редакционном стиле, генерирует обложку на Pillow и публикует пост.

Возможности: RSS-агрегация — Мониторинг 37+ RSS-лент профильных информагентств.; 4-уровневая дедупликация — Проверка по URL, хешу заголовка, fuzzy-тексту и AI-группировке.; LLM-рерайт и верстка — Адаптация текста под стиль канала и автоматическое создание обложки на Pillow.

Сложность: Надёжная защита от дубликатов новостей из разных СМИ и сохранение форматирования обложек при смене длины заголовка.

Результат: Автономный конвейер, выходящий каждый будний день без участия редактора.

Архитектура: Pipeline: RSS Fetcher → AI Filter → Dedup → Rewrite → Pillow Cover → Aiogram 3 (админка) + Telethon (MTProto публикация) → SQLAlchemy 2 + aiosqlite.

Технологии: Python 3.12, Aiogram 3, Telethon, SQLAlchemy 2, OpenAI API, Pillow.

### CARUSO360

Страница: https://gajsin.tech/project/caruso

HTML-презентация: https://gajsin.tech/presentations/caruso.html

Исходный код: приватный репозиторий.

Год: 2026.

Тип: Telegram; Клиентский проект.

Роль: Fullstack / AI / Telegram.

Статус: Completed.

Что это: Telegram Mini App для создания текстового и визуального контента

Задача: Собрать в Telegram рабочее пространство для подготовки публикаций, сценариев, каруселей и контент-планов с возможностью доводить результат вручную.

Что сделал: Разработал Mini App на React и API на Node.js. В продукте есть генерация нескольких форматов, профили авторского стиля, история результатов и редактор слайдов с отдельным рендерингом визуального контента.

Возможности: Форматы контента — Посты, сценарии Reels, карусели, Stories и контент-планы из одного интерфейса.; Авторский стиль — Профили стиля формируются на основе примеров и применяются при генерации.; Редактор слайдов — Текстовые блоки в готовом визуальном материале можно поправить перед финальным рендером.; Рабочий цикл — История, фоновые очереди, уведомления о готовности и платежные сценарии.

Сложность: Согласовать мобильный редактор, фоновые задачи генерации, сохранение состояний и оплату внутри Telegram.

Результат: Многоформатное приложение с генерацией текстов и визуальных материалов, очередями обработки, историей и редактором слайдов.

Архитектура: Telegram Mini App: React-интерфейс и редактор → Node.js API: авторизация, генерация, история и биллинг → Очереди и воркеры: длительные задачи и рендер → Хранилища: данные пользователя, результаты и шаблоны.

Технологии: React, TypeScript, Node.js, Telegram Mini App, Redis, BullMQ, PostgreSQL, LLM API.

## Расширения браузера

### YouFilter

Страница: https://gajsin.tech/project/youtube-filter

HTML-презентация: https://gajsin.tech/presentations/youtube-filter.html

Год: 2025.

Тип: Расширения браузера; Open Source.

Роль: Browser Extension.

Статус: Production.

Что это: Chrome MV3 расширение: блокировка рекламы YouTube на уровне API

Задача: Создать легкое Chrome-расширение, блокирующее рекламу на YouTube без использования громоздких DNR-списков, вызывающих детекцию анти-адблоком.

Что сделал: Написал расширение на Manifest V3 с внедрением хуков `fetch` и `XMLHttpRequest` в MAIN world. Блокировщик удаляет рекламные секции прямо из JSON-ответов `/player` до их попадания в плеер.

Возможности: Блокировка на уровне API — Модификация JSON-ответов плеера до визуального рендера.; Обход анти-адблока — Отказ от сетевых DNR-блокировок предохраняет от всплывающих окон блокировки.; Извлечение субтитров — Автоматическое получение субтитров через InnerTube API.

Сложность: Обеспечение безопасной изоляции скриптов и мгновенная обработка структуры динамического API YouTube.

Результат: Быстрое расширение с нулевой нагрузкой на процессор, не триггерящее предупреждения YouTube.

Архитектура: MAIN World Script: хуки fetch/XHR, фильтрация JSON → Content Scripts: управление воспроизведением, субтитры → Service Worker: хранение настроек.

Технологии: JavaScript, Chrome MV3, Service Workers, InnerTube API, chrome.storage.

### Tinct

Страница: https://gajsin.tech/project/tinct

HTML-презентация: https://gajsin.tech/presentations/tinct.html

Репозиторий: https://github.com/gajsin/Tinct

Год: 2026.

Тип: Расширения браузера; Open Source.

Роль: Browser Extension.

Статус: Production.

Что это: Точная настройка темы, яркости и контраста сайтов в Chrome

Задача: Дать пользователю единый способ переключать оформление сайтов и точно подстраивать изображение для комфортного чтения.

Что сделал: Создал расширение Chrome Manifest V3 с режимами системной, светлой и тёмной темы. Настройки могут применяться ко всем сайтам или к выбранным доменам. Попап построен как компактная панель точной настройки.

Возможности: Гибкий охват — Одна тема для всего веба или индивидуальные режимы для выбранных сайтов.; Точные регуляторы — Яркость, контраст и теплота меняются в реальном времени.; Бережная инверсия — Изображения и видео возвращаются к исходному виду поверх преобразованной страницы.

Сложность: Сохранить естественный вид фото, видео и canvas при инверсии страницы и не сдвигать закреплённые элементы.

Результат: Лёгкое расширение без аналитики и внешних запросов из его кода, с отдельными настройками по доменам.

Архитектура: Chrome MV3: настройки и хранение → Content script: применение темы к странице → Popup: быстрый выбор режима и регуляторы.

Технологии: JavaScript, Chrome MV3, CSS, chrome.storage.

## Парсеры и автоматизация

### OEM Bike Parts

Страница: https://gajsin.tech/project/oem

HTML-презентация: https://gajsin.tech/presentations/oem.html

Год: 2026.

Тип: Парсеры и автоматизация; Клиентский проект.

Роль: Backend / Data Pipeline.

Статус: Completed.

Что это: Сбор защищённого каталога мотозапчастей OEM

Задача: Сплошной сбор всего сайта oem-bike-parts.com: парсинг каталогов всех производителей, кубатур, семейств моделей, схем узлов и артикулов запчастей в условиях защиты Cloudflare.

Что сделал: Спроектировал асинхронный сборщик на Node.js и Playwright. Persistent browser profile и Chrome CDP поддерживают устойчивую сессию при работе с защищённым каталогом. Данные сохраняются в реляционной схеме SQLite3, а WebP-чертежи дедуплицируются по SHA-256.

Возможности: Устойчивая браузерная сессия — Playwright, Chrome CDP и persistent profile сохраняют состояние между этапами сбора защищённого каталога.; Реляционный майнинг каталога — Парсинг иерархии: Бренд → Категория объема → Серия и модификация → Схемы узлов → Позиции запчастей.; SHA-256 хэширование и дедупликация — Хэширование каждого изображения схемы для исключения повторных скачиваний и прямой привязки к строкам спецификации.; Локальный SQLite & Dashboard — Сохранение структурированного каталога в SQLite3 и генерация автономного HTML-дайджеста для аудита.

Сложность: Поддерживать устойчивую сессию при длительном сборе защищённого каталога, разбирать иерархии произвольной глубины и проверять связи позиций со спецификациями.

Результат: Полный сплошной скрапинг всего сайта oem-bike-parts.com. На демонстрационном стенде показана выкачанная модель Honda Bali 50 (41 схема узлов, 580 позиций деталей, 537 уникальных OEM-номеров).

Архитектура: Target Site: oem-bike-parts.com (Cloudflare Protection) → Node.js + Playwright (CDP persistent browser session) → Crypto SHA-256 Engine: дедупликация и валидация чертежей → SQLite 3 Store: реляционные таблицы брендов, схем и OEM-артикулов.

Технологии: Node.js, Playwright, Chrome CDP, SQLite 3, SHA-256, WebP, TypeScript.

### Wildberries & Ozon Scraper

Страница: https://gajsin.tech/project/ecommerce-scraper

HTML-презентация: https://gajsin.tech/presentations/ecommerce-scraper.html

Год: 2026.

Тип: Парсеры и автоматизация; Собственный продукт.

Роль: Backend / Data Pipeline.

Статус: Production.

Что это: Высокоскоростной асинхронный скрапер маркетплейсов Wildberries и Ozon

Задача: Сплошной сбор всего каталога маркетплейсов Wildberries и Ozon: мониторинг цен в реальном времени, остатков на региональных складах и иерархии категорий без использования рендеринга браузеров.

Что сделал: Построил асинхронный движок на Python 3.12 с httpx и curl_cffi. Настроил совместимые с Chrome TLS JA3-отпечатки для устойчивых запросов к внутренним REST API маркетплейсов и хранение временных рядов цен в ClickHouse.

Возможности: Прямой перехват REST API — Запросы к внутренним эндпоинтам маркетплейсов в обход HTML-рендеринга со скоростью до 12 500 RPM.; TLS JA3 Impersonation — curl_cffi воспроизводит сетевой профиль Chrome 124 для стабильной работы запросов к API.; Разбивка остатков по складам — Сбор точных остатков в разрезе фулфилмент-центров (Коледино, Электросталь, Казань, Обухово, Тверь).; Time-Series & Telegram Бот — История цен в ClickHouse, метаданные в PostgreSQL 16 и уведомления о просадках цен через aiogram 3.

Сложность: Обход защитных барьеров на высоких скоростях (12 500 запросов в минуту), детализация остатков по складам (Коледино, Электросталь, Обухово, Тверь) и эффективная дедупликация 48 300+ SKU.

Результат: Высокоскоростной конвейер сплошного сбора данных со скоростью до 12 500 req/min. На стенде выведена демонстрационная выборка категории «Электроника и аксессуары» (12 450 товаров, 48 300 SKU).

Архитектура: Wildberries & Ozon Internal REST API Endpoints → Python 3.12 Async Engine: httpx, curl_cffi (JA3/HTTP2), Proxy Rotator → ClickHouse Time-Series Store (история цен 365 дней) + PostgreSQL 16 → Delivery: aiogram 3.x Telegram Bot, FastAPI, Excel/CSV exporters.

Технологии: Python 3.12, httpx, curl_cffi, ClickHouse, PostgreSQL 16, Redis, Celery, FastAPI, aiogram 3.

### Faberlic Parser

Страница: https://gajsin.tech/project/faberlic-parser

HTML-презентация: https://gajsin.tech/presentations/faberlic-parser.html

Исходный код: приватный репозиторий.

Год: 2026.

Тип: Парсеры и автоматизация; Клиентский проект.

Роль: Парсинг / e-commerce интеграция.

Статус: Completed.

Что это: Парсер каталога и товарный фид для интернет-магазина

Задача: Регулярно собирать полные данные каталога Faberlic и передавать их в существующий магазин без потерь вариантов, цен, остатков и изображений.

Что сделал: Написал парсер на Python: он собирает коды из каталога, получает карточки из product API, сохраняет исходные данные и формирует два XML-фида — исходный и подготовленный для WooCommerce. Варианты товаров получают собственные идентификаторы и наследуют общие описания.

Возможности: Сбор без браузера — Данные карточек извлекаются через API, без тяжёлого рендеринга страниц.; Варианты и медиа — Размеры, оттенки, цены, остатки, описания и галереи переходят в структуру импорта.; Безопасное обновление — Ошибки загрузки фиксируются, а готовый фид не заменяется неполным результатом.; Интеграция с магазином — Поля подготовлены под WP All Import и WooCommerce; стабильный ID предотвращает дубли.

Сложность: Не публиковать неполные фиды при сетевой ошибке, сопоставлять товары по устойчивому ID и не стирать вручную настроенные поля магазина.

Результат: Первый полный фид включил 4 700 товарных позиций и 12 995 уникальных ссылок на изображения. Ежедневный запуск обновляет фид только после успешного сбора.

Архитектура: Python: обход каталога и product API → Нормализация: варианты, свойства и изображения → XML / JSON: исходный снимок и импортный фид → WordPress / WooCommerce: обновление товарных карточек.

Технологии: Python, Product API, XML, JSON, WordPress, WooCommerce, WP All Import.

### Carro

Страница: https://gajsin.tech/project/carro

HTML-презентация: https://gajsin.tech/presentations/carro.html

Исходный код: приватный репозиторий.

Год: 2026.

Тип: Парсеры и автоматизация; Клиентский проект.

Роль: AI / парсинг / экспорт.

Статус: Completed.

Что это: Инвентаризация мотозапчастей по фотографиям с привязкой к OEM

Задача: Превратить фотографии разобранного мотоцикла в товарные позиции: определить физические детали, сверить их с каталогом и подготовить таблицу для маркетплейсов.

Что сделал: Собрал локальный Python-конвейер. Он принимает папку или публичную ссылку Яндекс.Диска, кэширует OEM-каталог в SQLite, передаёт фотографии мультимодальному API для группировки и проверки, затем заполняет клиентский XLSX-шаблон.

Возможности: Фото как доказательство — Все кадры проходят визуальный осмотр; группы можно пересматривать по мере появления новых признаков.; OEM-сверка — Парсер получает схемы узлов и позиции деталей, а локальный кэш ускоряет повторные запросы.; Экспорт под заказчика — Готовый Excel заполняет название, номер, описание, ссылки и применимость в нужных колонках.

Сложность: Не смешать похожие, но разные физические детали и не выдавать заводскую маркировку за доказательство, что на двух снимках один предмет. Для спорных групп сохраняется возможность адресной перепроверки фото и схемы.

Результат: Один CLI-запуск формирует XLSX с товарными позициями, OEM-номерами и применимостью. Спорные сопоставления помечаются для проверки; каталоговый кэш ускоряет повторные прогоны.

Архитектура: Локальная папка / Яндекс.Диск: фотографии и ссылка на каталог → Python / SQLite: парсинг и кэш OEM-данных → Мультимодальный API: группировка и каталожная проверка → openpyxl: экспорт в клиентский шаблон XLSX.

Технологии: Python, Multimodal LLM API, Scrapling, SQLite, Pillow, openpyxl.

## Приложения для iPhone

### FrameFix

Страница: https://gajsin.tech/project/framefix

HTML-презентация: https://gajsin.tech/presentations/framefix.html

Исходный код: приватный репозиторий.

Год: 2026.

Тип: Приложения для iPhone; Прототип.

Роль: Backend / мультимодальный AI.

Статус: MVP.

Что это: Видеодиагностика: покажите проблему и получите следующий шаг

Задача: Помочь владельцу iPhone показать неисправный объект на видео, задать вопрос и получить понятные действия по диагностике или устранению проблемы.

Что сделал: Собрал backend FrameFix на Express: загрузка видео, извлечение кадров и аудио через FFmpeg, распознавание речи, мультимодальный анализ и сохранение диалога. Для инструкций и технических вопросов предусмотрен поиск дополнительных источников.

Возможности: Видео в контекст — Из ролика извлекаются кадры и аудиодорожка; клиент может передать готовые кадры вместе с видео.; Ответ по проблеме — Модель получает визуальные кадры и транскрипт, чтобы отвечать на намерение пользователя.; Прогресс и диалог — API сообщает стадии обработки и сохраняет контекст для последующих вопросов.

Сложность: Не задерживать весь ответ из-за одного неудачного этапа обработки, показывать прогресс клиенту и очищать временные файлы после загрузки.

Результат: Рабочий backend-прототип для мобильного сценария: анализ видео, прогресс по этапам и продолжение разговора после первого ответа.

Архитектура: Express / Multer: приём видео и кадров → FFmpeg / STT API: извлечение и распознавание → Multimodal LLM API / веб-поиск: анализ и источники → Redis: сохранение контекста разговора.

Технологии: Node.js, Express, FFmpeg, Whisper API, Multimodal LLM API, Redis.
