Розробка мобільного застосунку для порівняння цін (Price Comparison)

Каталоги постачальників розходяться в назвах і характеристиках, тому покупець бачить різні ціни на один товар і йде до конкурента. Ми розробляємо мобільні застосунки для порівняння цін під ключ: зіставляємо пропозиції з різних джерел, стежимо за свіжістю даних і передаємо продукт із регламентами оновлення. Ви отримуєте точне порівняння, якому довіряє користувач.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка мобільного застосунку для порівняння цін (Price Comparison)
Середній
від 2 тижнів до 3 місяців
Часті запитання

Чому порівняння цін ламається на реальних каталогах

Магазини й маркетплейси віддають каталоги в різному вигляді: CSV-вивантаження, XML-прайси, JSON через інтерфейс, а частину джерел доводиться розбирати безпосередньо з розмітки сторінок.

У одного й того самого товару в двох каталогах розходяться порядок слів у назві, роздільники в артикулах, одиниці вимірювання та набір характеристик.

Зіставлення за точною збіжністю рядка на різнорідних каталогах промахується в десятках відсотків випадків, і це ще без урахування людського фактора в самих даних.

Далі помилка зіставлення перетворюється на неправильну ціну в картці: різні моделі склеюються в одну позицію, чохол опиняється поруч із телефоном, у добірці залишаються пропозиції магазинів, які товар уже не продають.

Користувач не розбирається, чий це збій, — він бачить, що цифра не збіглася з реальністю, і йде до конкурента.

Окрема історія — застарілі вивантаження. Джерела оновлюються з різною періодичністю: одне віддає дані щогодини, інше раз на добу, третє лише на запит.

Поки кеш і розклад оновлень не враховують цей розкид, на розпродажі в добірці живе ціна двогодинної давності, а поруч — уже змінена: порівняння цін втрачає сенс при першій же розбіжності з касою.

Добиває якість даних про товари: порожні характеристики, різні позначення кольору й об'єму, бренд то в назві, то в окремому полі.

Тому зіставлення будують не на одному рядку, а на наборі ознак — артикул і глобальний ідентифікатор, бренд, ключові атрибути, близькість найменувань, — а правила нормалізації та пороги збігу налаштовуються під конкретний каталог.

Нижче розбираємо, як це закривається: від приймання вивантажень до правил склеювання й контролю свіжості.

Що дає точне порівняння цін: охоплення, свіжість, довіра

Порівняння цін працює не тоді, коли в каталозі багато магазинів, а коли за кожною позицією можна перевірити три величини: частку товарів з коректною ціною, час від зміни ціни в джерелі до її появи в застосунку та кількість звернень до підтримки щодо «ціна не збіглася».

Ці три показники ми закладаємо в приймання — інакше «порівняння» тримається на відчутті, а не на перевірюваних даних.

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

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

Свіжість цін тримається на розкладі оновлень. Швидкі категорії опитуються часто й невеликими порціями, повільні — рідше, за розкладом; замість повного перезавантаження каталогу оновлюються лише змінені позиції, тому ціна доходить до застосунку за хвилини, а не за добу.

Окремо налаштовується поведінка при недоступному джерелі: остання підтверджена ціна зберігається з позначкою часу, а не підміняється здогадом.

Звернення до підтримки — найчесніша метрика: покупець пише, коли побачив у застосунку одне, а на касі інше. Зниження дає не лише точність даних, а й поведінку екрана при розбіжності: позначка «ціну підтверджено на дату», коротке пояснення причини й зворотний зв'язок в один тап.

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

Варіанти отримання даних: регулярні вивантаження та збір із вітрин

Каталог порівняння цін — це завжди набір різнорідних джерел. Магазини віддають прайси файлами за розкладом, партнерські програми — потоком через інтерфейс, а частина продавців доступна лише через публічну вітрину.

Від вибраного режиму залежить свіжість цін, навантаження на джерела й обсяг ручної роботи з розбіжностями в зіставленні товарів.

Варіант Коли підходить Обмеження
Регулярні вивантаження від магазинів (CSV, XML, YML за розкладом) Магазин готовий віддавати каталог повністю, ціни змінюються не частіше кількох разів на добу Затримка між оновленнями; різний набір полів і кодувань; потрібна нормалізація та зіставлення за штрихкодом і назвою
Партнерські канали Є домовленість із мережею або агрегатором, потрібні точні залишки й ціни Ліміти джерел на кількість запитів; залежність від одного постачальника даних; розрив при зміні умов
Збір із вітрин У продавця немає ні вивантаження, ні партнерського доступу, але каталог відкритий Крихкість до змін верстки, захисти від автоматичних запитів, юридичні обмеження, відчутне навантаження на джерело
Гібридна схема Ринок неоднорідний: частина джерел віддає файли, частина доступна лише через вітрину Складніша експлуатація — потрібен єдиний шар нормалізації та контроль дублів між каналами

Гібридна схема майже завжди виграє за покриттям: вивантаження дають точність і дешеве оновлення, партнерські канали — залишки в реальному часі, збір із вітрин закриває довгий хвіст магазинів.

Ключове тут — єдина модель товару та спільний конвеєр приймання даних: тоді джерело можна додати, обмежити за частотою запитів або вимкнути без перезбирання застосунку.

Етапи робіт: від розбору даних до запуску та передачі

Порядок етапів вибудуваний так, щоб дані сходилися раніше, ніж з'явиться перший екран застосунку. Спочатку розбираємо джерела й домовляємося, за якою ознакою товар вважається одним і тим самим, потім будуємо зіставлення і лише потім вмикаємо оновлення.

Помилка в моделі даних тут коштує годин роботи, у готовому застосунку — переробки логіки та інтерфейсу.

  1. Розбір джерел. Дивимося, як магазини віддають каталоги: вивантаження, відкриті інтерфейси, розмітка сторінок. Фіксуємо частоту оновлення, наявність артикула й штрихкоду, обмеження щодо навантаження на джерело.
  2. Схема зіставлення. Проєктуємо правила зведення товару в одну картку: точні ідентифікатори, потім зв'язка «бренд + модель», потім розбір назви. Окремо описуємо категорії та одиниці вимірювання — інакше порівняння цін дає хибні пари.
  3. Налаштування оновлень. Ціни перераховуються частіше, каталог рідше. Налаштовуємо чергу запитів, повтори при недоступності джерела та накопичення історії цін — без неї не показати динаміку.
  4. Перевірка на реальних даних. Проганяємо потік за період і звіряємо: частка зведених карток, хибні склеювання, пропущені позиції. Приймання йде на живих категоріях, а не на підготовленій вибірці.
  5. Запуск. Виводимо оновлення в робочий контур, вмикаємо оповіщення про падіння джерела й повільні відповіді, перевіряємо поведінку застосунку при неповних даних.
  6. Передача проєкту. Віддаємо документацію щодо джерел і правил, регламент оновлень, доступи й навчаємо команду замовника роботі з розміткою.

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

Склад постачання: схеми даних, регламенти оновлення, доступи

Постачання закривається не датою релізу, а пакетом артефактів, за яким застосунок можна розвивати й підтримувати без нас. Нижче — що саме залишається у вашої команди разом із вихідним кодом.

  • Схема даних. Сутності товару, магазину, пропозиції та історії ціни, їхні зв'язки й ключі — за схемою одразу видно, де зберігається джерело істини для кожної картки та як будується видача при порівнянні.
  • Опис джерел. Перелік каналів надходження цін (вивантаження за розкладом, файл, відкритий інтерфейс магазину), їхній формат, частота та обмеження за кількістю звернень.
  • Правила зіставлення. Нормалізація назв, моделей і характеристик, пороги збігу та черга ручного розбору спірних пар — щоб один і той самий товар не розпадався на кілька карток.
  • Регламент оновлення. Розклад перезбирання цін, порядок дій при недоступності джерела та правило, за яким застаріла пропозиція приховується, а не показується з минулою ціною.
  • Передача доступів. Облікові записи сервісів і панелей, ключі інтеграцій, права на публікацію збірок, контакти відповідальних на боці магазинів.
  • Внутрішня документація. Карта сервісів, схема розгортання, порядок відкату релізу та типові операції підтримки з описом очікуваного результату.
  • Метрики збору. Панель із часткою успішно прийнятих джерел, відсотком зіставлених позицій і затримкою між зміною ціни та її показом користувачу.

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

Кейс: скоротили розбіжності в даних і час оновлення

Де ламалося до

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

«Смартфон X 128 ГБ чорний» і «Смартфон X, 128GB, Black» залишалися різними товарами, зате склеювалися сусідні покоління однієї лінійки.

Частка неправильних позицій у видачі трималася на 12–14%, ціна на вітрині відставала від сайту магазину на десятки хвилин, а підтримка розбирала потік однотипних звернень «у вас неправильна ціна».

Що змінили й що вийшло

Ми перевели зіставлення на стійкий ключ: артикул виробника й штрихкод, де вони є, плюс нормалізація назви та характеристик для решти карток.

Звірку з еталонним каталогом Google Merchant Center зробили регулярною, а розбіжності — видимими: пара отримує оцінку впевненості, і спірні збіги йдуть на ручну перевірку, а не у видачу.

Оновлення цін перевели на обробку потоку змін — перераховуються лише зачеплені позиції та їхні сусіди за порівнянням, а не весь каталог повністю.

Частка неправильних позицій упала до 0,6–0,9%, час реакції на зміну ціни скоротився з десятків хвилин до 1–3 хвилин на гарячому потоці.

Навантаження на підтримку знизилося приблизно в шість разів: ручні правки каталогу звелися до розбору неоднозначних карток, а типові звернення закрилися самі.

Метрики до й після винесено в панель моніторингу, тому просідання зіставлення видно в день появи, а не за скаргами — регрес ловиться до того, як його помітить покупець.

Що робити, якщо джерела вже підключені, але дані розходяться?

Розбіжності майже ніколи не живуть у застосунку — вони живуть у правилах зіставлення товарів між джерелами. Якщо каталоги підключені, а ціни на один і той самий товар роз'їжджаються, отже не збіглися нормалізація назви, одиниця вимірювання, артикул або валюта. Переписувати застосунок безглуздо — новий код успадкує ті самі помилки.

Ревизія починається з вибірки, а не з коду. Вивантажуємо розбіжності за період і розкладаємо за класами: товар не знайшов пару, знайшов хибну, зійшовся за назвою, але розійшовся в характеристиках. Частка кожного класу задає порядок робіт — зазвичай основну частину шуму дає один-два класи.

Потім правила виносяться в шар зіставлення, окремий від логіки видачі. Первинний ключ — штрихкод або артикул виробника, резервне правило — бренд плюс нормалізована назва з порогом схожості; спірні пари йдуть у таблицю ручних підтверджень, яку оновлення каталогу не затирає.

Одиниці вимірювання й вага фіксуються окремо: ціна за кілограм або літр розходиться найчастіше — так буває і у вивантаженнях на кшталт Google Shopping.

Поетапне доопрацювання дешевше за повну переробку. Шар нормалізації змінюється покроково, контракт видачі залишається незмінним, тому стабільність застосунку не страждає: порівняння цін, обране й сповіщення працюють на тих самих даних. Ефект вимірний після кожного етапу — частка зіставлених позицій зростає, хибних пар менше.

Критерій готовності — не «розбіжностей немає», а керована частка й зрозумілий відкат: правило, що погіршило видачу, знімається налаштуванням без релізу. Опишіть, які джерела підключені та де розходяться, — повернемося з планом ревізії.

Часті технічні сумніви: зіставлення та свіжість даних

Зіставлення товарів — місце, де найчастіше руйнується довіра до видачі: один і той самий товар надходить від джерел із різними назвами, артикулами й одиницями вимірювання.

Тому ми порівнюємо не рядки, а набір ознак — модель, характеристики, категорію — і зводимо їх до канонічної картки.

Нижче — питання, які зазвичай ставлять на прийманні: межі джерела, поведінка без підключення до мережі, додавання нових постачальників даних.

Як зіставляються товари, якщо в джерел немає спільних артикулів?

Між джерелом і видачею стоїть канонічний товар і правила зведення до нього. Збіг підтверджується кількома ознаками одразу, спірні пари йдуть на перевірку, а не в результати. Поріг спрацювання налаштовується за категоріями: для електроніки він строгий, для одягу м'якший.

Що бачить людина без підключення до мережі?

Остання отримана видача й ціни зберігаються локально, екран залишається робочим. Після повернення зв'язку дані оновлюються, а застарілі значення позначаються — видно, що ціна могла змінитися. Так список не порожніє в метро та на підземному паркінгу.

Як підключається новий постачальник даних?

Джерело додається окремим модулем: описуємо структуру його видачі, приводимо поля до спільної схеми та включаємо в загальний потік. Інші джерела при цьому не чіпаємо.

Якщо постачальник змінює структуру видачі, правки залишаються всередині його модуля, і застосунок продовжує працювати.

Хто відповідає за достовірність цін?

Ми відповідаємо за отримання, зіставлення та відображення даних, джерело — за те, що воно віддає. Поруч із ціною видно, коли вона оновлювалася й звідки надійшла, а розбіжності фіксуються в журналі. Це знімає спір «застосунок показав неправильну ціну» ще до звернення до підтримки.

Обговоримо задачу: що потрібно для оцінки та плану робіт

Щоб повернутися з оцінкою термінів і планом робіт, а не із загальними формулюваннями, нам потрібні вхідні дані щодо продукту. Нижче — мінімум, який знімає основну невизначеність; решту уточнимо в розмові та зафіксуємо в технічному описі.

  • Джерела цін: партнерські інтерфейси магазинів, вивантаження каталогів, відкриті сторінки — що доступно та на яких умовах.
  • Географія та мережі: країни й міста, чи потрібні регіональні ціни та в якій валюті показуємо вартість.
  • Зіставлення товарів: чи є штрихкоди й артикули постачальників, за якими ознаками вважаємо дві пропозиції одним товаром.
  • Користувацькі сценарії: пошук, список порівняння, історія ціни, сповіщення про зниження, обране, вхід в акаунт.
  • Навантаження: скільки товарів і магазинів, як часто перераховуються ціни, наскільки свіжі дані потрібні.
  • Доступи й правила: договори з магазинами, обмеження на використання їхніх даних, вимоги до персональних даних.
  • Аналітика та публікація: що вважаємо цільовою дією, у яких магазинах застосунків викладаємося та хто володіє акаунтами.

За цими вхідними даними ми повертаємося з планом робіт: етапи, склад команди — мобільна розробка, серверна частина, нормалізація даних, тестування — та оцінка термінів із порядком випуску. Опишіть задачу й надішліть те, що вже є: повернемося з оцінкою та планом.

Наші компетенції:

Останні роботи

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714