Un BMW 320d Touring din 2019, cu 86.400 km, listat de un dealer din apropierea Varșoviei. Nimic ieșit din comun — numai Polonia reprezintă 32.821 din cele 1,1 milioane de anunțuri active pe care le avem, iar BMW este una dintre cele cinci mărci care apar în aproape fiecare regiune pe care o monitorizăm, 56.740 de anunțuri la nivel global. Am ales acest anunț pentru că este obișnuit. Obișnuitul este locul unde pipeline-ul fie funcționează, fie se stricăm pe tăcute.
Anunțul Așa Cum A Ajuns la Noi
Pagina sursă ne-a oferit un preț de „89 900 zł", un șir de caractere pentru kilometraj care arăta „86 400 km", un câmp pentru versiune îngropat în titlu („320d Touring xLine") și un paragraf de descriere în poloneză care menționa „bezwypadkowy" — fără accident — pe care scraperul nostru nu îl interpretează semantic, ci îl stochează ca text brut, alături de restul informațiilor. Acesta este contractul pe care trebuie să-l respecte fiecare scraper: să prindă ce este pe pagină, fără să-l interpreteze încă; interpretarea se face mai târziu, în aval, unde putem aplica o regulă unică și consecventă, în loc de 1.375 de reguli specifice fiecărei surse.
În acest stadiu, rândul este aproape inutilizabil. Are un simbol de valută inclus într-un șir de caractere, o unitate de kilometraj inclusă în alt șir de caractere, iar versiunea este de fapt trei informații distincte amestecate într-una singură.
Câmpul Valutei
Aceasta este partea care, dacă o greșești, stric㠠de fapt lucrurile. „89 900 zł" trebuie să devină un număr în PLN, apoi să fie convertit la un curs de schimb zilnic, în moneda pe care o va vedea utilizatorul final. Am mai avut probleme aici — nu cu acest anunț exact, dar cu aceeași categorie de bug: o sursă europeană care afișa prețul brut (gross), iar parserul nostru l-a tratat, pe tăcute, ca pe un câmp diferit, astfel încât modelul s-a antrenat pe numere cu o ordine de mărime distanță de realitate. Soluția nu a fost un regex ingenios, ci tratarea valutei ca pe un câmp propriu, cu tip bine definit și o ordine proprie de fallback-uri, rezolvată o singură dată, consecvent, în loc să fie re-derivată în cinci locuri diferite, cu cinci presupuneri diferite despre ce înseamnă o valoare lipsă.
Pentru acest BMW, numărul rezolvat a fost 89.900 PLN, aproximativ 22.100 USD la cursul zilei respective. Dacă greșești asta cu doar 10%, mașina pare fie o afacere excelentă, fie o țeapă, din motive care nu au nicio legătură cu mașina în sine.
Câmpul Kilometrajului
„86 400 km" este, comparativ, simplu — nu există ambiguitate privind unitatea de măsură, nici convenții de semn de care să te îngrijorezi. Dar kilometrajul este locul unde se întâlnește a doua cea mai frecventă problemă de calitate a datelor: valorile lipsă. Aproximativ 81.000 din anunțurile noastre din tot setul de date pur și simplu nu indică o citire a kilometrajului, de obicei pentru că sursa o ascunde în spatele unui zid de tipul „contactează vânzătorul", sau dealerul pur și simplu nu a completat câmpul. Acele mașini primesc o estimare imputată, calculată pe baza cohortei, și un marcaj „≈", în loc de un număr afirmat cu certitudine — preferăm să-ți spunem că ghicim decât să ne prefacem că nu o facem. Acest anunț nu a fost unul dintre acestea. 86.400 km este o cifră reală, declarată, lucru care contează pentru ce urmează.
Canonul Marcă/Model
„320d Touring xLine" trebuie redus la trei informații separate: marca (BMW), familia de model (Seria 3) și versiunea (320d, caroserie Touring, pachet xLine). Lucrul acesta pare banal până vezi în câte feluri scriu dealerii aceeași mașină — „320d Touring xLine", „320d xLine Touring", „Seria 3 320d Sport Line Touring", uneori cu codul motorului, alteori fără. Hărțile noastre canonice (canon maps) există exact pentru a reduce acest haos la o singură familie per mașină, pentru că un model de preț antrenat pe „320d Touring xLine" ca șir unic de caractere nu învață nimic — are nevoie de suficiente rânduri BMW Seria 3 într-o singură categorie pentru a găsi un tipar real. În acest moment, aproximativ 85,6% din rândurile noastre se rezolvă curat la prima trecere; restul reprezintă coada lungă formată din greșeli de scriere, scripturi non-latine și prescurtări ale dealerilor cu adevărat ambigue, care încă au nevoie de curățare.
Cohorta Regională
Aici se decide dacă această mașină este marcată drept o ofertă bună, și este și partea care are cele mai mari șanse să surprindă: nu comparăm acest BMW cu un preț de catalog fix. Îl comparăm cu alte anunțuri BMW Seria 3 active în prezent în Polonia, ajustate în funcție de vechime și kilometraj. Aceasta este o cohortă, nu un tabel de căutare, și este reconstruită constant, pentru că prețul „corect" pentru un 320d din 2019 se schimbă pe măsură ce apar mai multe sau mai puține astfel de mașini pe parcurile dealerilor.
| Segment din cohortă | Anunțuri în cohortă | Preț median (USD) | Această mașină |
|---|---|---|---|
| BMW Seria 3, Polonia, toate vechimile | 1.840 | 24.600 | — |
| Anii de fabricație 2018–2020 | 612 | 23.100 | — |
| + segmentul 70k–100k km | 203 | 22.850 | 22.100 |
La 22.100, comparativ cu o mediană a cohortei potrivite de 22.850, această mașină se situează cu aproximativ 3,3% sub nivelul competitorilor ei. Nu e dramatic. Dar nici nimic.
Verdictul Modelului de Preț
Separat de comparația pe cohortă, modelul nostru regional de preț produce propria estimare, bazată pe setul complet de caracteristici — kilometraj, versiune, vechime, caroserie, regiune. Ca referință, modelul nostru de preț de vânzare pentru EAU are în prezent o eroare medie de aproximativ 13,3%; echivalentul european, prin rutarea aferentă, se apropie de 11,6%, ținând cont de dispersia de preț între regiuni, care este mai mare în Europa decât într-o singură piață compactă precum EAU. O reducere de 3,3% la o mașină într-o piață cu o marjă tipică de eroare de aproximativ 1 din 9 nu este suficientă, de una singură, pentru a o declara cu încredere subpreciată. Este suficient de interesant. Nu este suficient pentru o insignă.
Insigna de Ofertă
Acesta este pragul la care puțini oameni se gândesc: cât de mult sub mediana cohortei trebuie să se situeze o mașină, înainte să fim dispuși să ne punem numele pe eticheta de „ofertă"? Monitorul nostru de oferte (deal monitor) rulează această verificare după fiecare trecere de crawling, regiune cu regiune, și marchează în prezent aproximativ 12.823 de anunțuri pe zi, în tot setul de date — aproximativ 1,2% din tot ce este activ. O rată de detecție atât de mică este deliberată. O insignă care se aprinde la 10% din anunțuri nu mai este semnal, ci zgomot cu o etichetă verde pe el.
Acest BMW anume nu a trecut de prag. 3,3% sub cohortă, în interiorul propriei marje de eroare a modelului, într-o cohortă de 203 mașini comparabile — nu suficient de restrânsă pentru a fi nesigură, dar nici suficient de amplă pentru a fi la adăpost de orice îndoială. A ajuns pe site ca un anunț obișnuit: preț, kilometraj, versiune, regiune, fără insignă.
Ce Se Întâmplă în Continuare (Perspectiva Cumpărătorului)
Ceea ce este, sincer, rezultatul corect, și totodată cel mai puțin satisfăcător despre care să scrii. Cele mai multe mașini nu sunt nici oferte, nici țepe. Sunt prețuite în interiorul zgomotului statistic specific mașinilor similare, iar răspunsul onest la întrebarea „este acesta un preț bun" este „da, aproximativ, pentru ce reprezintă". Insigna există pentru minoritatea de anunțuri în care diferența este suficient de mare încât să merite cu adevărat timpul de a o confirma cu un mecanic sau o a doua opinie. Pentru tot restul — inclusiv acest BMW — numărul de pe ecran reflectă deja ce plătesc de fapt oamenii pentru o mașină asemănătoare, în această săptămână, pe această piață. Este o propoziție mai puțin palpitantă decât „această mașină este o chilipir", dar este cea adevărată în 98,8% din cazuri.



