До портфоліо

Catalog Weaver

Настільний застосунок для збагачення Excel-каталогів автозапчастин: пошук зображень, сумісність з ТЗ та AI-контроль якості — ввічливий браузерний пошук, кешування й експорт назад у Excel.

Дані конкретних постачальників і API-ключі не публікуються.

Категорія

Desktop Apps

Дата

2026-06

Статус

Production-ready MVP

Роль

Архітектура, backend, desktop UI, інтеграція AI-пайплайну

Технології

C#, .NET 8, WPF, Playwright, ClosedXML, SQLite, Serilog, OpenAI API, Gemini API

Теги

C#, WPF, Automotive, Catalog Enrichment, Web Scraping, AI Consensus, Excel Automation

Огляд

Catalog Weaver — це Windows-застосунок для структурованого збагачення Excel-каталогів автозапчастин.

Фокус — на керованих, відновлюваних процесах. Користувач може:

  • імпортувати каталоги постачальників з Excel;
  • шукати зображення товарів у джерелах EU aftermarket (браузер + HTTP);
  • визначати сумісність (легкові та комерційні ТЗ);
  • за потреби запускати AI consensus — ранжування кандидатів і відсів поганих зображень;
  • кешувати результати за бренд + артикул і продовжувати перервані партії;
  • експортувати збагачені дані в Excel із вбудованими зображеннями.

Система спроєктована з модульними search providers, профілями пошуку та headless CLI для демо та CI-тестів.


Контекст

Проєкт виник із потреби прискорити підготовку каталогів для дистриб’юторів автозапчастин: сотні чи тисячі рядків з брендом, артикулом і описом, але без надійних фото та списків застосування.

Цільовий процес мав забезпечувати:

  • ненав’язливий краулінг (throttling, один рядок за раз, сесія Google);
  • мапінг колонок для українських і латинських заголовків;
  • оцінку впевненості та ручний перегляд сумнівних збігів;
  • сумісність без ручного TecDoc на кожен рядок;
  • відновлювані довгі запуски (кеш, пропуск оброблених, періодичне auto-save);
  • експорт із збереженням усіх вихідних колонок і лише трьома новими: URL зображення, вбудоване фото, сумісність.

Ключова вимога — поєднати класичний скрапінг з рішеннями на LLM, не втрачаючи прозорість і не витрачаючи бюджет API на кожне зображення-кандидат.


Відповідальність

  • архітектура рішення та поетапний план впровадження;
  • WPF UI та налаштування;
  • оркестрація пошуку (Playwright, DuckDuckGo/Bing HTTP, site-scoped providers);
  • пайплайн AI consensus (Gemini pre-rank → фінальна модель → rule + vision якість зображення);
  • шар сумісності (Google AI overview, OpenAI API fitment);
  • кеш SQLite і файловий consensus-cache;
  • імпорт/експорт Excel (ClosedXML);
  • throttling, failsafe зупинка партії, логування (Serilog);
  • CLI для headless batch і CI.

Рішення

Реалізація — .NET 8 WPF із шарами: Core, Search, Consensus, Compatibility, Cache, Export, Excel, Images, Infrastructure, App, Cli.

Користувач може:

  • відкрити Excel-каталог і змапити колонки (Brand, Article, Description тощо);
  • обрати search profile (наприклад, EU aftermarket suppliers, catalog-only);
  • запустити пакетний пошук із прогресом і статусом по рядках;
  • переглянути обране зображення, сумісність і попередження про watermark;
  • експортувати {catalog}_results.xlsx із вихідними колонками + три нові поля;
  • очистити кеш і перезапустити окремі рядки після зміни профілю або ключів.

Режим AI consensus (опційно) поєднує Playwright discovery, Gemini pre-rank, фінальну модель, перевірку якості зображень і API-сумісність, коли браузерний шлях пропущено або порожній.

Окрема увага — ввічлива автоматизація: concurrency = 1 рядок, налаштовувані затримки, рання зупинка при Google CAPTCHA, failsafe при серії інфраструктурних збоїв.


Технічні деталі

Стек

  • C# / .NET 8
  • WPF
  • Playwright (Chrome, persistent profile)
  • AngleSharp / HTML-парсери
  • ClosedXML (Excel, embedded images)
  • SQLite (кеш пошуку)
  • JSON file cache (consensus)
  • Serilog
  • HttpClient (Bing, DuckDuckGo, OpenAI-compatible APIs)
  • Gemini + OpenAI-compatible chat/vision

Архітектура

  • Search — провайдери, discovery, confidence scoring, visual verification;
  • Consensus — збір кандидатів, two-stage evaluator, image quality;
  • Compatibility — orchestrator, AI client, Google AI overview;
  • Cache — SQLite + файловий consensus-cache;
  • Export — slim Excel, CSV, manual review;
  • App — UI, settings, profiles;
  • Cli — headless batch.

Профілі пошуку (JSON у work folder) задають домени, catalog-only, ліміти сумісності без перекомпіляції.

Функціональність

Реалізовано:

  • імпорт Excel і мапінг колонок (у т.ч. українські заголовки);
  • пошук зображень (web, Playwright, image APIs);
  • сумісність (браузер + API);
  • AI consensus із two-stage ranking і image quality;
  • локальне збереження зображень або лише URL;
  • відновлення з кешу після повторного відкриття файлу;
  • пропуск успішних рядків при повторному запуску;
  • періодичне auto-save (інтервал + кількість рядків);
  • auto-export після завершення;
  • failsafe при серії збоїв;
  • job CSV logs і manual-review export;
  • переносимий work folder (БД, images, profiles, logs, settings).

Виклики

Основними викликами були:

  • anti-bot — Google CAPTCHA, Cloudflare, блоки DuckDuckGo HTTP;
  • формати артикулів — крапки, дужки, дефіси в SKU vs HTML сторінки;
  • хибні зображення — watermark, категорійні сторінки замість карток товару;
  • баланс LLM — pre-rank на всіх кандидатах, vision лише на топ;
  • довгі запуски — кеш до запису на диск, auto-save на 100+ рядках;
  • легкові + комерційні ТЗ — промпти для Volvo FH, Actros тощо;
  • захищена гілка main у GitLab — feature branches і merge requests.

Також важливо було зберегти простий контракт експорту для ERP/marketplace: вихідні колонки без змін, лише три колонки збагачення.


Результат

Проєкт підтвердив:

  • повний цикл збагачення каталогу Excel → обробка → Excel;
  • модульну архітектуру search providers і profiles;
  • AI consensus з fallback на rule-based scoring;
  • відновлювані партії (SQLite + consensus cache);
  • failsafe і auto-save для тривалих unattended-запусків;
  • кодову базу для CLI, CI та майбутніх адаптерів постачальників.

Архітектура придатна для автоматизації aftermarket-каталогів, підготовки PIM і marketplace listings.


Примітки

  • Зразки каталогів клієнта та API-ключі не публікуються.
  • ID моделей AI змінюються; міграція defaults при завантаженні settings.
  • Windows 10+; Playwright profile для входу в Google.
  • Акцент на ввічливому краулінгу та ручному перегляді low-confidence рядків.

Галерея

Відео

Відеоогляд ще не опубліковано.

Посилання

Зовнішнє посилання недоступне для цього кейсу.