30 beceri: hasarlı parçanın maliyeti30 skills: what a damaged part costs

Maliyet modeli 1.2 · 1.100 ilan · kaynaklarlaCost model 1.2 · 1,100 listings · with sources

Önceki işi denetledik ve maliyet tahmini için 30 beceri öğrendik: 24 tanesi bugün uygulandı, 1 tanesi ölçüldü ama yayınlanmadı, 5 tanesi planlandı. Sonuç: parça fiyatları artık 4 ülkeden 1.100 gerçek ilana dayanıyor ve her tahmin kendi ilan bağlantılarını gösteriyor.We audited the previous work and learned 30 skills for cost estimation: 24 applied today, 1 measured but not shipped, 5 planned. Result: part prices now rest on 1,100 real listings from 4 countries, and every estimate shows its own listing links.

Ne değiştiWhat changed

  1. 1Önce eski işi denetle: bağlantı çürümesiAudit the previous work first: link rotUygulandıApplied

    1.1 kaynaklarından 47 bağlantı test edildi: 13’ü 200 dönmedi; 1 gerçek 404 (parcafilosu), gerisi bot engeli. Kaynaklar artık tek tek ilan bağlantılarıyla destekleniyor.47 links behind cost model 1.1 were tested: 13 did not return 200; 1 real 404 (parcafilosu), the rest bot blocks. Prices are now backed by individual listing links.

    📄 Klein et al. 2014 — Scholarly context not found: one in five articles suffers from reference rot ↗

  2. 2robots.txt’e uy, tarama gecikmesi koyObey robots.txt and rate-limitUygulandıApplied

    Yalnız izin verilen yollar (ör. otocikma’da arama yasak → kategori sayfaları), sayfa başına 2,5–4,5 sn; breakeryard 403 dönünce tarama hemen durduruldu.Only allowed paths (e.g. otocikma forbids search → category pages), 2.5–4.5 s per page; when breakeryard returned 403 the crawl was stopped at once.

    📄 RFC 9309 — Robots Exclusion Protocol (IETF, 2022) ↗

  3. 3Bot korumasını aşma; kaynağı değiştirNever bypass bot protection; switch sourceUygulandıApplied

    eBay, Trendyol, Hepsiburada, autodoc, akakçe, idealo… engelli → atlandı; yerine izinli pazar yerleri (n11, otocikma, Kleinanzeigen, breakeryard, RockAuto).eBay, Trendyol, Hepsiburada, autodoc, akakçe, idealo… blocked → skipped; replaced by allowed marketplaces (n11, otocikma, Kleinanzeigen, breakeryard, RockAuto).

    📄 RFC 9309 §2.2 — crawlers must respect the rules; robots.txt is not access control ↗

  4. 4Ülke başına birden çok kaynak türüSeveral source types per countryUygulandıApplied

    TR: sıfır (n11) + çıkma (otocikma); DE: ilan sitesi; UK: söküm yerleri; US: katalog. Sıfır/çıkma ayrı istatistik.TR: new (n11) + used (otocikma); DE: classifieds; UK: breakers; US: catalogue. New and used get separate statistics.

    📄 Ghose & Yao 2011 — Using transaction prices to re-examine price dispersion in electronic markets ↗

  5. 5Parça sözlüğü: pozitif + negatif kelimelerPart taxonomy: positive + negative wordsUygulandıApplied

    4 dilde parça kelimesi zorunlu; aksesuar/parçacık kelimeleri (çıta, krom, sis çerçevesi, braket, lip, uç, slam panel, conta…) elenir.The part word is required in 4 languages; accessory / sub-part words (trim, chrome, fog frame, bracket, lip, end cap, slam panel, seal…) are rejected.

    📄 Manning, Raghavan & Schütze — Introduction to Information Retrieval (boolean retrieval) ↗

  6. 6Uyum (fitment) doğrulamasıFitment verificationUygulandıApplied

    Başlıkta araç modeli olmalı; yanlış kuşak (Golf 6 ≠ Golf 7), yanlış model (Corolla Cross, C-Max, Peugeot 308 / “2008” yılı) elenir; ABD’de katalog uyumu (yıl+model+motor).The car model must be in the title; wrong generation (Golf 6 ≠ Golf 7) and wrong model (Corolla Cross, C-Max, Peugeot 308 / the year “2008”) are rejected; US uses catalogue fitment (year+model+engine).

    📄 Christen 2012 — Data Matching (record linkage and entity resolution) ↗

  7. 7Kuşak kodu → yıl tablosuGeneration code → year tableUygulandıApplied

    9N, 6R, Corsa C/D/E/F, Mk3/Mk4, J10/J11, W205, F30, B8, AE101… başlıktan üretim yılı çıkarılır; yıl yoksa “doğrulanmamış” işaretlenir (102 satır).9N, 6R, Corsa C/D/E/F, Mk3/Mk4, J10/J11, W205, F30, B8, AE101… give production years; if none, the row is flagged “unverified” (102 rows).

    📄 Wikipedia model generation tables (e.g. Volkswagen Polo generations) ↗

  8. 8Paket ilanları ayıklaRemove bundle listingsUygulandıApplied

    “Frontpaket / body kit” ve 3+ farklı parça adı geçen ilanlar elendi (Golf 7 TCR 3.897 € gibi uç değerler).“Frontpaket / body kit” and titles naming 3+ different parts are removed (outliers like a €3,897 Golf 7 TCR front end).

    📄 Rousseeuw & Hubert 2011 — Robust statistics for outlier detection ↗

  9. 9Makul fiyat aralığı süzgeciPlausible price windowUygulandıApplied

    Parça başına € alt sınır (klips/ampul) ve 4.000 € üst sınır (araç / paket).Per-part € floor (clips / bulbs) and a €4,000 ceiling (whole cars / bundles).

    📄 Rousseeuw & Hubert 2011 — Robust statistics for outlier detection ↗

  10. 10Ortalama değil, yüzdelikQuantiles, not meansUygulandıApplied

    Parça fiyatı = p25–p90 (sıfır) ; medyan ve p10/p75 de saklanıyor.Part price = p25–p90 (new); median and p10/p75 are stored too.

    📄 Hyndman & Fan 1996 — Sample quantiles in statistical packages ↗

  11. 11KDV normalizasyonuVAT normalisationUygulandıApplied

    Mağaza fiyatlarından KDV düşüldü (TR %20, DE %19, UK %20); bireysel ilanlarda KDV ayrımı yok; ABD satış vergisi hariç.VAT removed from shop prices (TR 20%, DE 19%, UK 20%); no VAT split on private listings; US excludes sales tax.

    📄 European Commission — VAT rates in the EU ↗

  12. 12Tarihli resmi kurDated official FX rateUygulandıApplied

    Tüm fiyatlar ECB referans kuruyla € (23.10.2026: 1 € = 55,67 TL = 0,837 £ = 1,119 $); kur ve tarih her satırda.All prices also in € at the ECB reference rate (23 Oct 2026: €1 = TRY 55.67 = £0.837 = $1.119); rate and date on every row.

    📄 ECB euro foreign exchange reference rates ↗

  13. 13Set / çift fiyatını birime çevirConvert sets / pairs to unit pricesUygulandıApplied

    “2x, takım, Paar, pair” ilanlarında fiyat ikiye bölünerek istatistiğe girer (units alanı).“2x, takım, Paar, pair” listings enter the statistics at half price (units field).

    📄 Hyndman & Fan 1996 — Sample quantiles (unit-consistent samples) ↗

  14. 14TekilleştirmeDe-duplicationUygulandıApplied

    Aynı URL veya aynı (ülke, parça, başlık, fiyat) tek satır; 2.633 tekil alakalı ilan havuzu.Same URL or same (country, part, title, price) → one row; pool of 2,633 unique relevant listings.

    📄 Fellegi & Sunter 1969 — A theory for record linkage ↗

  15. 15Dengeli tabakalı örneklemeBalanced stratified samplingUygulandıApplied

    Her ülke 275 ilan; araç × parça hücrelerinden sırayla, ucuz-pahalı dönüşümlü seçilerek fiyat yayılımı korunur.275 listings per country, round-robin over car × part cells, alternating cheap/expensive to keep the spread.

    📄 Cochran 1977 — Sampling Techniques (stratified sampling) ↗

  16. 16Rastgele elle denetim + Wilson aralığıRandom manual audit + Wilson intervalUygulandıApplied

    Bağımsız örnek: parça+araç doğru 70/80 = %87.5 (GA %78.5–93.1); düzeltme sonrası yeni örnek 53/60 = %88.3.Held-out sample: right part + car 70/80 = 87.5% (CI 78.5–93.1%); fresh sample after fixes 53/60 = 88.3%.

    📄 Brown, Cai & DasGupta 2001 — Interval estimation for a binomial proportion ↗

  17. 17Ayar örneği ≠ test örneğiTuning sample ≠ test sampleUygulandıApplied

    İlk 60 satırlık örnek yalnız filtre tasarımı için kullanıldı; doğruluk ayrı rastgele örneklerde raporlandı.The first 60-row sample was used only to design the filter; accuracy is reported on separate random samples.

    📄 Kapoor & Narayanan 2023 — Leakage and the reproducibility crisis in ML-based science ↗

  18. 18Yarıya bölme ile geriye testSplit-half backtestUygulandıApplied

    Yarıda öğren, diğer yarıda test (50 tekrar): sıfır parça aralığı kapsaması %45 → %58; orta nokta hatası ×1.61 → ×1.36.Fit on one half, test on the other (50 repeats): new-part range coverage 45% → 58%; midpoint error ×1.61 → ×1.36.

    📄 Angelopoulos & Bates 2021 — A gentle introduction to conformal prediction ↗

  19. 19Sıfır / çıkma ayrı kuralSeparate rules for new vs usedUygulandıApplied

    ≥8 sıfır ilan → p25–p90; yalnız çıkma varsa alt sınır = çıkma p25, üst sınır = 1.1 sıfır üst sınırı (DE/UK).≥8 new listings → p25–p90; used only → low end = used p25, high end = the 1.1 new-part maximum (DE/UK).

    📄 NAMIC / GAO via MWL — non-OEM crash parts cost 20–65% less than OEM ↗

  20. 20OEM / yan sanayi / CAPA etiketiOEM / aftermarket / CAPA flagUygulandıApplied

    Kalite alanı: orijinal, çıkma orijinal, yan sanayi, CAPA sertifikalı (RockAuto etiketi).Quality field: OEM, used OEM, aftermarket, CAPA certified (RockAuto tag).

    📄 CAPA — Certified Automotive Parts Association ↗

  21. 21Kaynağı çıktıda gösterShow provenance in the outputUygulandıApplied

    Maliyet kutusu ve API her parça satırında “N ilana göre, medyan X” + 3 ilan bağlantısı + tüm ilanlar sayfası veriyor.The cost box and the API give “based on N listings, median X” + 3 listing links + the full list on every part line.

    📄 Gebru et al. 2018 — Datasheets for Datasets ↗

  22. 22Veri sayfası (datasheet) yayınlaPublish a datasheetUygulandıApplied

    price-db.html: alanlar, yöntem, sınırlar, indirilebilir CSV/JSON; HF veri kümesi README.price-db.html: fields, method, limits, downloadable CSV/JSON; HF dataset README.

    📄 Gebru et al. 2018 — Datasheets for Datasets ↗

  23. 23İlan fiyatı ≠ satış fiyatı uyarısıAsking price ≠ sale price warningUygulandıApplied

    İlan fiyatlarının dağılımı satış fiyatlarının ~3 katı bulunmuş; sayfada ve API notunda belirtiliyor.Listing-price dispersion was found to be ~3× that of transaction prices; stated on the page and in the API note.

    📄 Deng et al. 2015 — Online price dispersion revisited (JMIS) ↗

  24. 24Tek doğruluk kaynağı, sürüm testiSingle source of truth + version testsUygulandıApplied

    Site ve API aynı cost-model.json 1.2 + aynı fiyat verisi; API testleri 24/24 (fiyat uç noktası + basis bağlantıları).Site and API share cost-model.json 1.2 and the same price data; API tests 24/24 (price endpoint + basis links).

    📄 Breck et al. 2017 — The ML test score ↗

  25. 25Hedonik fiyat modeliHedonic price modelÖlçüldü, yayınlanmadıMeasured, not shipped

    Fiyat ~ parça + sınıf + durum + yaş modeli incelendi: hücre başına ilan sayısı (7–46) küçük, bu yüzden şimdilik yüzdelik kullanılıyor; veri büyüyünce tekrar.Price ~ part + class + condition + age: cells hold only 7–46 listings, so quantiles are used for now; revisit when data grows.

    📄 Rosen 1974 — Hedonic prices and implicit markets ↗

  26. 26Seyrek hücrelerde kısmi havuzlamaPartial pooling for sparse cellsPlanlandıPlanned

    Az ilanlı hücreler (TR bagaj kapağı n=3) ülke-parça ve sınıf ortalamasına doğru büzülecek (ampirik Bayes).Sparse cells (TR tailgate n=3) will shrink towards country-part and class means (empirical Bayes).

    📄 Efron & Morris 1975 — Data analysis using Stein’s estimator ↗

  27. 27Konformal kantil regresyonConformalized quantile regressionPlanlandıPlanned

    Araç sınıfı + parça girdisiyle garanti kapsamlı fiyat aralığı; ~5.000 ilan sonrası.Price intervals with a coverage guarantee from car class + part; after ~5,000 listings.

    📄 Romano, Patterson & Candès 2019 — Conformalized quantile regression ↗

  28. 28Gradyan artırma ile maliyetGradient boosting for costPlanlandıPlanned

    Gerçek eksper faturalarıyla (onaylı geri bildirim) XGBoost; yayınlanmış R² .97 değeri kendi uzman verisiyle, genelleşmesi bilinmiyor.XGBoost on real assessor invoices (consented feedback); the published R² .97 is on its own expert data, generalisation unknown.

    📄 Sci. Reports 2026 — Automated vehicle damage classification + XGBoost repair cost ↗

  29. 29Onar / değiştir eşiğiRepair-vs-replace thresholdPlanlandıPlanned

    Onarım (saat × ücret) > parça + takma maliyetinin belli oranı ise değiştir; şimdilik alan eşiği kullanılıyor.Replace when repair (hours × rate) exceeds a share of part + fitting cost; today an area threshold is used.

    📄 SSRG IJME 2026 — repair vs replace decision layer (severity > 80% → replace) ↗

  30. 30Enflasyon / tazelik takibiInflation / freshness trackingPlanlandıPlanned

    TR fiyatları hızla eskiyor: aylık yeniden tarama (DO alarm) ve medyan değişimi izleme; captured_at her satırda.TR prices age fast: monthly re-crawl (DO alarm) and median-drift monitoring; captured_at is on every row.

    📄 Cavallo 2017 — Are online and offline prices similar? (Billion Prices Project) ↗

Kod: cekicin-ai/pricedb (scrape_pw.py, scrape_http.py, build_db.py, audit_results.json), v5/cost/apply_pricedb.py, validation_1_2.json. Maliyet modeli 1.2.0 · API 1.7.0.Code: cekicin-ai/pricedb (scrape_pw.py, scrape_http.py, build_db.py, audit_results.json), v5/cost/apply_pricedb.py, validation_1_2.json. Cost model 1.2.0 · API 1.7.0.