İkinci el elektronik ürünler için kondisyon duyarlı fiyat zekâsı.
FiyatPilot, ikinci el elektronik ürünler için gerçekçi satış fiyatı önerileri üreten modern bir web platformudur.
Kullanıcı model/teknik özellikleri ile kozmetik durumu, pil sağlığını ve garanti/fatura/kutu bilgilerini girer; sistem çok kaynaklı ilanları normalize eder, alakasız ve uç fiyatları filtreler, kondisyon etkisini hesaba katar ve sonuç olarak açıklanabilir fiyat aralığı + net satış önerisi üretir.
İkinci el fiyatlama, pratikte iki nedenle zordur:
- Veri düzensizdir: Aynı ürün farklı başlık formatları, eksik alanlar ve değişen içeriklerle listelenir.
- Kondisyon fiyatı belirler: Kozmetik durum, pil sağlığı, garanti/fatura/kutu gibi sinyaller “aynı model” görünse bile ciddi fiyat farkı yaratır.
FiyatPilot, manuel karşılaştırmayı yorucu olmaktan çıkarır: çok kaynaklı ilan delillerini normalize eder, benzerlik + alaka skoru üretir, aykırı fiyatları filtreler ve kondisyon düzeltmesi ile açıklanabilir bir fiyat önerisi sunar.
- İkinci el piyasasında fiyatlar çoğu zaman **düzensiz, ölçülemeyen ve “bağlama bağlı”**dır.
- Aynı ürün, farklı ilan başlıkları ve eksik bilgilerle listelenir:
- “Aynı model” sanılır ama RAM/SSD, yazılım sürümü veya aksesuarlar farklıdır.
- Garanti/fatura/kutu bilgisi çoğu zaman metnin içinde gizlidir.
- Kondisyon farkı, fiyatı doğrudan etkiler:
- kozmetik durum
- pil sağlığı
- garanti/fatura/kutu
- satıcı tarafından belirtilen sorunlar
- Kullanıcılar tahmin değil, neden-sonuç ilişkisi kuran bir fiyat ister.
- Manuel karşılaştırma hem zaman alır hem de “tutarsız” sonuç üretir.
FiyatPilot, fiyatı tek bir sayı olarak üretmez. Karşılaştırma mantığıyla birlikte, fiyatı bir “delil seti” üzerinden çıkarır:
- Çok kaynaklı ilan tarama
- İlan normalizasyonu (tek bir canonical şemaya dönüştürme)
- Benzer ürün eşleştirme (deterministic relevance + match tier’lar)
- Alaka skoru
- Uç fiyat filtreleme (median + IQR + trimmed mantık)
- Kondisyon düzeltmesi (kozmetik/pil/garanti/fatura/kutu + sorun notları)
- Güven skoru
- Sonuç: fiyat aralığı + net öneri + açıklama metni
Not: Bu MVP’de hedef “kesin ekspertiz” değil; gerçekçi ve açıklanabilir ikinci el fiyat zekâsıdır.
Ürün: Apple MacBook Pro 14 M1 (16GB/512GB/SSD)
Hızlı satılır fiyat: 74.500 TL
Normal piyasa fiyatı: 79.900 TL
Premium fiyat: 86.200 TL
Net önerilen satış: 75.900 TL
Güven skoru: 0.78
Kısa gerekçe:
- Match tier: exact/near ilanlar ağırlıkla kullanıldı.
- Aykırı ilanlar outlier filtresiyle elendi (IQR tabanlı).
- Kozmetik ve pil sinyalleri kondisyon çarpanına yansıtıldı.
- Kullanıcı ürün bilgilerini girer (model + teknik özellikler + kondisyon).
- Sistem API üzerinden sorgu oluşturur.
- Kaynaklardan ilan adayları toplanır.
- İlanlar canonical şemaya normalize edilir.
- Eşleşme motoru benzerliği hesaplar ve include/exclude kararlarını üretir.
- Aykırı/uyumsuz veriler filtrelenir.
- Kondisyon etkisi fiyat motoruna uygulanır.
- Fiyat önerisi + güven skoru + açıklama üretilir ve dashboard’ta gösterilir.
- Dashboard
- Analiz oluşturma, durum takibi ve sonuç ekranı
- Eşleşen/elenen ilanlar ile match gerekçeleri
- Arama / Orkestrasyon (modüler)
- Connector’lar bağımsız çalışır; normalization → relevance → pricing pipeline
- Kaynak connector yapısı
- Kaynak bazlı ayrıştırma ve normalize etme sınırları net
- Devre dışı kalabilirlik ve circuit breaker için hazır
- İlan normalizasyon katmanı
- Tek bir canonical listing şeması
- Relevance / Eşleşme motoru
- Deterministic weighted matching + fuzzy başlık desteği
exact_match,near_match,weak_match,rejected- Açıklanabilir per-ilan gerekçe
- Fiyat motoru
- Outlier filtering (median/IQR/trim)
- Recency ağırlığı + kaynak güvenilirliği sinyalleri
- Condition adjustment ile kondisyon düzeltmesi
- Explainability katmanı
- Fiyatın “neden öyle çıktığı” okunabilir şekilde raporlanır
- Admin / operasyon paneli
- Connector health, job queue durumu, son analiz koşuları, hata logları
- Geçmiş analizler
- Tarihçe, detaya inme, deterministik sonuçların izlenmesi
- Kaynak ilan inceleme görünümü
- Kaynak + fiyat + match tier + “neden dahil/harici” görünümü
FiyatPilot, sorumluluk ayrımını net tutar:
- API (apps/api)
- Request validasyonu
- Analiz oluşturma (rate limit + duplicate caching)
- Sonuçları ve admin endpoint’lerini sunma
- Queue + Worker (apps/worker)
- Redis kuyruğundan job çekme
- Analiz pipeline’ını çalıştırma
- Retry + DLQ + error history yazma
- Connector’lar (packages/source_connectors)
- Sadece kaynak payload’unu
RawListingformatına çevirir - Normalizasyon / fiyat mantığı connector içinde değil
- Sadece kaynak payload’unu
- Normalization (packages/normalization)
RawListing→NormalizedListingdönüşümü
- Relevance Engine (packages/relevance_engine)
- Deterministic eşleşme ve explainable match açıklamaları
- Pricing Engine (packages/pricing_engine)
- Outlier filtering + weighted scoring + condition adjustment
- Shared Domain (packages/shared)
- API/Worker/Web arasında ortak Pydantic modeller
Kullanıcı girdisi → API → Redis job → Worker → connector’lar → normalize → relevance → pricing → Postgres → dashboard.
flowchart LR
U[Kullanici] --> W[Web Dashboard]
W --> A[API]
A --> Q[Queue]
Q --> K[Worker]
K --> C[Connector Katmani]
C --> N[Normalization]
N --> R[Relevance Engine]
R --> P[Pricing Engine]
P --> S[Sonuc]
S --> W
Diyagram basit tutulmustur. Teknik route ve islem detaylari:
POST /api/v1/analyses: analiz istegi olusturur- Worker, queue uzerinden is alir ve pipeline adimlarini calistirir
- Sonuc verisi Postgres uzerinden API tarafindan dashboard a doner
| Katman | Teknoloji |
|---|---|
| Frontend | Next.js, TypeScript, Tailwind, shadcn/ui |
| Backend | FastAPI (versioned REST + admin endpoints) |
| Worker | Python async pipeline |
| Database | PostgreSQL |
| Queue | Redis (job list/queue) |
| Scraping / Ingestion | Connector mimarisi (MVP’de fixture temelli stublar) |
| UI | Screenshot-ready, minimal ve okunabilir kartlar |
| Infra | Docker + Docker Compose |
| Observability | Structured JSON logs (API + worker), admin hata logları |
Önerilen ek (ilerleyen aşamalar):
- Playwright (canlı scraping için)
- Centralized logging (ELK/Datadog)
- Monitoring/alerting (Prometheus/Grafana)
fiyatpilot/
apps/
web/
api/
worker/
packages/
pricing_engine/
normalization/
relevance_engine/
source_connectors/
search_orchestrator/
shared/
docs/
infra/
Kısa özet:
apps/web: Ürün UI ve kullanıcı akışıapps/api: Analiz oluşturma + sonuç + admin operasyon endpoint’leriapps/worker: Pipeline + retry + DLQ + circuit breaker statepackages/*: Deterministic engine’ler ve domain modellerinfra/: (planlı) production altyapı parçaları (migrations, kural setleri vb.)
packages/shared- Pydantic DTO’lar: analiz request/result, normalizasyon çıktıları, relevance açıklamaları
- Deterministic sistem boyunca tip uyumu sağlar
packages/normalizationRawListing→NormalizedListingdönüşümü- Metin/alan parse + unit normalization
packages/relevance_engine- Brand/model/spec karşılaştırmaları
- Weighted scoring + fuzzy title desteği
exact/near/weak/rejectedtier’ları ve explainability üretimi
packages/pricing_engine- Outlier filtering (median + IQR + trim)
- Recency weight + source reliability ile ağırlıklandırma
- Condition adjustment çarpanları
- Sonuç: hızlı satılır / piyasa / premium / net + güven skoru + gerekçe
packages/source_connectors- Kaynak sınırı: yalnızca connector →
RawListing - Connector failures izole edilir (ops paneli ile görünür olur)
- Kaynak sınırı: yalnızca connector →
packages/search_orchestrator- (planlı/örnek) pipeline orkestrasyon arayüzleri ve akışın tek noktadan yönetimi
git clone https://github.com/<owner>/fiyatpilot.git
cd fiyatpilotCopy-Item .env.example .envBağımlılıklar (yerel UI / geliştirme ve test akışı için):
pnpm installdocker compose up --buildSadece API + Worker (UI olmadan hızlı doğrulama):
docker compose up --build -d api workerDurdurma ve yerel veriyi temizleme:
docker compose down -vBeklenen servisler:
postgres(PostgreSQL)redis(queue + caching + circuit breaker state)api(FastAPI)worker(Redis job tüketicisi)web(Next.js)
- Dashboard:
http://localhost:3000/dashboard - Admin:
http://localhost:3000/dashboard/admin(Basic Auth)
Demo:
- Boş veritabanında API, demo analizlerini otomatik seed eder (configurable).
- MVP’de “deterministic engines” Python paketleri içinde yer alır.
- Web katmanı UI’ı sunar; API sonuçları üretir/queue’lar.
- Worker pipeline’ı çalıştırır ve Postgres’e yazar.
Bu ayrım, canlı scraping veya ek connector’larda bile mimarinin çabuk büyümesini sağlar.
Önerilen yerel geliştirme akışı:
- Hızlı test: Docker Compose
- UI iterasyonu: Web servisini ayağa kaldırıp dashboard üzerinden geri bildirim al
- Motor geliştirme: Python paketlerini güncelle, sonra worker/API container’larını yeniden başlat
DATABASE_URL=postgresql+asyncpg://user:pass@postgres:5432/fiyatpilot
REDIS_URL=redis://redis:6379/0
NEXT_PUBLIC_API_URL=http://localhost:8000
NEXT_PUBLIC_API_BASE_URL=http://localhost:8000
APP_ENV=development
LOG_LEVEL=INFO
# Scraping / ingestion mod
SCRAPER_MODE=fixture
# Feature toggles
FEATURE_FLAGS="demo_seeding=true,admin_auth=true"Not: Projeyi ayağa kaldırmak için gerekenler .env.example dosyasında kapsamlı şekilde bulunur.
Fiyat motoru, fiyatı “delil seti” üzerinden hesaplar:
- Outlier filtering
- Aday fiyatlar bir set olarak alınır.
- Median baz alınır.
- IQR yaklaşımıyla uçlar kesilir:
Q1(1. çeyrek),Q3(3. çeyrek)IQR = Q3 - Q1- outlier aralığı:
[Q1 - 1.5*IQR, Q3 + 1.5*IQR]
- Trim mantığı: filtrelenen aralığın dışındaki fiyatlar kırpılır/elenir.
- Weighted scoring
- Match tier:
exact/neardaha yüksek ağırlık alır,weak/rejectedazalır. - Recency weight: ilan yaşlandıkça ağırlık düşer.
- Source reliability: kaynak kalitesi/sağlığına göre ek çarpan uygulanır.
- Match tier:
- Condition adjustment
- Kozmetik skor (0–10)
- Pil sağlığı (yüzde)
- Garanti / fatura / kutu
- Sorun notları (downside etkisi)
- Bu sinyaller, delil seti üstünde bir condition multiplier olarak uygulanır.
Sonuçlar:
- Hızlı satılır fiyat (daha agresif satış profili)
- Normal piyasa fiyatı
- Premium fiyat (daha yüksek kabul eşiği)
- Net önerilen satış fiyatı
- Güven skoru + açıklama metni
Kullanıcıya aşağıdaki çıktılar gösterilir:
- Hızlı satılır fiyat
- Normal piyasa fiyatı
- Premium ilan fiyatı
- Net önerilen satış fiyatı
- Güven skoru (0-1)
- Açıklama (fiyatlama gerekçesi)
- Dahil edilen / hariç tutulan ilanlar
- Her ilan için match tier
- “Neden dahil/elenmiş” gerekçesi (explainability)
Bu yapı, kullanıcı için “kara kutu fiyat” hissini ortadan kaldırır.
İlk sürüm odakları (MVP):
- laptop
- telefon
- tablet
- oyun konsolu
Amaç:
- Kesin ekspertiz yapmak değil,
- Kullanıcının girdilerine dayanarak gerçekçi fiyat zekâsı üretmek.
Bu sayede ürün, kullanıcı geri bildirimiyle daha da güçlenebilir.
Faz 1: Temel iskelet
- web dashboard + analiz akışı
- temel connector stubları
- deterministik relevance/pricing iskeleti
Faz 2: Connector genişlemesi
- daha fazla kaynak
- kaynak bazlı daha sağlam parse stratejileri
- ingestion quality sinyalleri
Faz 3: Daha güçlü eşleşme
- daha iyi fuzzy başlık eşleştirme
- spec karşılaştırmalarında genişletilmiş ağırlıklar
Faz 4: Kondisyon zekâsı
- kondisyon sinyallerini daha ince modelleme
- pil sağlığı + garanti/fatura etkilerini rafine etme
Faz 5: Açıklanabilirlik ve admin
- pricing evidence view
- detaylı ops paneli
- daha zengin hata görselleştirme
Faz 6: Ürünleşmiş MVP
- doğrulanmış live connector’lar
- daha gelişmiş caching ve rate limit stratejileri
- daha güçlü kalite metrikleri ve izleme
- Bireysel satıcı
- “Benzer ürünlerden yola çıkarak net fiyat önerisi istiyorum.”
- Küçük ikinci el mağazası
- Aynı kategoride düzenli fiyat kontrolü + geçmiş analizler
- Telefon/laptop al-sat yapan kullanıcı
- Kondisyona göre fiyat stratejisini hızlı güncelleme
- Fiyat kontrolü yapan alıcı
- İlanı değerlendirirken “beklenen bant” bilgisini kullanma
- Toplu analiz ihtiyacı olan operasyon ekibi
- Çoklu analiz akışı + admin ops görünümü
- Rastgele fiyat tahmin aracı değildir.
- Basit bir scraper değildir.
- Tek bir siteye bağlı ilan sayfası değildir.
- Açıklamasız sayı üreten bir kara kutu değildir.
FiyatPilot’un tasarımı: delil seti + deterministik mantık + açıklanabilir çıktı.
Proje, üretim odaklı MVP’ye giden aktif geliştirme sürecindedir.
Mimarisi modülerdir; connector’lar, normalizasyon, relevance ve pricing katmanları bağımsız olarak genişletilebilir.
Katkılarınızı memnuniyetle bekliyoruz:
- Hata/bug bildirimi
- Mimari veya modül önerileri
- Yeni connector parse önerileri
Önerilen akış:
- Açık bir issue aç
- Değişiklik için kısa bir PR tanımı yap
- Test + doğrulama adımlarını ekle
Bu proje için lisans bilgisi: TBD.
İkinci el piyasasında fiyatlar çoğu zaman “görünür” ama “ölçülemez”dir.
FiyatPilot; kondisyonu hesaba katan, delil setiyle çalışan ve açıklanabilir sonuç üreten bir fiyat zekâsı inşa ediyor.