Тикет пришёл в 9:14 утра, тема письма — «bug??», и больше никаких любезностей. Читатель по имени Файсал сохранил в закладки Nissan Patrol Platinum 2020 года, белый с бежевым салоном, а через два дня наткнулся на то, что выглядело точь-в-точь как та же машина, только под другим ID объявления, с другим именем продавца и на AED 8,000 дешевле. Он хотел знать, не дублирует ли наша платформа строки данных — потому что если да, то как вообще доверять нашим ценам.
Справедливый вопрос. На этой неделе у нас в базе 1,108,535 активных объявлений по 73 регионам и 1,375 источникам, из них только на ОАЭ приходится 59,393 — их наполняют скраперы вроде dubizzle.py и opensooq_uae_scraping_task.py, работающие независимо друг от друга и обращающиеся к совершенно разным сайтам с совершенно разными схемами данных. Nissan по всему миру — это 42,342 строки в нашей системе. Где-то в этой куче затерялись два Patrol, которые на глаз Файсала были одной и той же машиной с двумя разными ценниками.
Я поднял обе записи ещё до того, как сварился кофе. Тот же год выпуска, та же комплектация, тот же цвет кузова, пробег отличается на одиннадцать километров — достаточно близко, чтобы списать на округление, но недостаточно, чтобы что-то доказать. Разные номера телефонов, хотя номер с OpenSooq оказался бизнес-аккаунтом только для WhatsApp — само по себе показательная деталь. Разные даты публикации, с разницей в четыре дня. И деталь, которую Файсал не упомянул: на фото салона в более дешёвом объявлении на лобовом стекле всё ещё виднелась регистрационная наклейка UAE Pass — такую дилеры часто оставляют на время передачи машины между владельцами.
| Объявление на OpenSooq | Объявление на Dubizzle | |
|---|---|---|
| Цена | AED 79,000 | AED 87,000 |
| Пробег | 61,200 км | 61,211 км |
| Дата публикации | День 1 | День 5 |
| Контакт | WhatsApp для бизнеса | Личный мобильный |
| Видна регистрационная наклейка | Да | Нет |
Такая картина — бизнес-номер WhatsApp, чуть более высокая цена, фотографии, явно сделанные на дилерской площадке, а не у кого-то во дворе — типичный почерк комиссионной перепродажи. Моя версия, и я бы поставил на неё: в начале недели частный владелец продал или передал машину на комиссию брокеру, тот через четыре дня перевыставил её на другой площадке с наценкой, при этом позволив исходному объявлению доработать до конца срока, — и в эти пересекающиеся дни один и тот же физический Patrol был одновременно живым в двух местах по двум ценам. На этом рынке такое происходит постоянно. Местные дилеры «с обочины» гоняют один и тот же товар сразу через три-четыре площадки и далеко не всегда снимают старое объявление в момент смены владельца.
А вот что на самом деле важно было ответить в тикете: мы не объединяем такие объявления и не будем. Наша логика дедупликации схлопывает дубликаты только внутри одного источника — когда тот же ID объявления снова всплывает при повторном обходе, — но она намеренно никогда не объединяет записи между источниками по VIN, даже когда мы почти уверены, что это одна и та же машина. Прежде чем отвечать Файсалу, я сверился с нашим собственным правилом, потому что так и тянет подумать: «ну очевидно же, надо объединить, это одна машина». Но два продавца с одним VIN — это, по сути, два участника рынка, делающие два независимых предложения, и если считать их дубликатами, это будет означать тихое удаление ценового сигнала одного из продавцов из датасета — а именно такие вещи незаметно портят модель поиска недооценённых машин со временем. Мы ежедневно помечаем около 12,823 объявлений как заниженные относительно их региональной когорты, и это число вообще что-то значит только если в пуле остаются все живые предложения, сколь бы избыточными они ни выглядели.
Так что я честно рассказал Файсалу: это не баг, скорее всего перепродажа, а разница в AED 8,000, на которую он смотрел, — это не шум, а самый чёткий сигнал о недооценённом предложении в его поиске за всю неделю, лежащий прямо на виду. Объявление на OpenSooq и правда оказалось одной из отмеченных в тот день выгодных сделок — его цена была ниже, чем просили за шесть сопоставимых Patrol в комплектации Platinum в Дубае и Шардже. Сам того не желая, он наткнулся на урок сразу с двух сторон: похожие друг на друга объявления обычно объясняются особенностями распространения, а не ошибкой в данных, и именно «нестандартное» из пары чаще всего стоит того, чтобы позвонить по нему первым.
Один дилер, с которым я разговаривал в Шардже много лет назад, сформулировал это куда прямолинейнее, чем я решился бы написать: «Машине всё равно, на скольких сайтах она выставлена. Говорит цена». Он был прав, и это, по сути, и есть весь аргумент в пользу того, чтобы никогда не схлопывать двух продавцов в одну строку.
К середине дня я добавил в наш FAQ строчку про кажущиеся дубликаты — в основном для того, чтобы следующий Файсал получал мгновенный ответ, а не расследование длиной в день. Чего я не стал менять, так это само правило дедупликации — тот же источник, тот же ID, и ничего больше. Два продавца, один VIN — всё равно два объявления. Если вам когда-нибудь попадётся машина мечты дважды, не спешите считать, что сайт сломался. Посмотрите, кто просит меньше, и сначала спросите почему.



