Rol & kapsam
Baştan sona tasarlandı ve kuruldu, o günden beri de sürekli geliştiriliyor: kiracı yalıtımı (süper yönetici, kiracı yöneticisi, kiracı kullanıcısı) olan çok kiracılı bir PIM platformu; her değişikliğin yayına girmeden önce gözden geçirilmesini sağlayan bir taslak/yayınla akışı; ve öncesi/sonrası anlık görüntüleriyle eksiksiz denetim kaydı.
- Shopify öncelikli senkronizasyon; yanında NetSuite ERP bağlantısı ve ChannelEngine üzerinden Amazon ile diğer pazaryerlerine aktarım.
- Başlıkların, açıklamaların, SEO metinlerinin ve çevirilerin yapay zekâyla zenginleştirilmesi — üretilen içerik yayımlanmadan önce bir inceleme adımıyla.
- Ürün ekibinin katalogda sohbet üzerinden arama yapmasını ve çalışmasını sağlayan gömülü bir RAG asistanı: ürün verisi üzerinde vektör arama ve kullanıcının önce onaylaması gereken eylemler için araç çağrıları.
- Ekibin pazaryeri sayfalarındaki ürünleri doğrudan zenginleştirme kuyruğuna atmasını sağlayan ayrı bir Chrome eklentisi.
- AB GPSR uyumluluk modülü, anahtar kelime hacmi doğrulamalı bir SEO modülü ve yeniden denemeli bir kuyruk üzerinden arka plan görevleri (vektör senkronu, zenginleştirme, zamanlayıcı).
Etki
- Ana pazarda 3.400'ün üzerinde aktif ürün ve Amazon gibi pazaryerlerinde yüzlerce ek listelemeye giden aktarım akışları.
- Kategori URL'lerini sessizce ezen bir yapay zekâ çeviri hattı geri alındı ve yönlendirmeler oluşturup her şeyi bir denetim kaydına yazan bir sürümle değiştirildi.
- Her NetSuite bağlantısının yapay zekâ içeriğini ve Shopify değişikliklerini ezdiği bir senkronizasyon hatası, her seferinde elle onarılmak yerine yapısal olarak çözüldü.
- Sekiz ay süren kesintisiz geliştirmede 350'nin üzerinde commit — tek seferlik bir teslim değil, ürün gamıyla birlikte büyüyen bir sistem.
Mimari
NestJS backend ve Next.js 14 (App Router) frontend içeren bir Turborepo monoreposu; paylaşılan bir Prisma veritabanı paketi ve ortak tiplerle. pgvector eklentili PostgreSQL hem ürün verisini hem de gömüleri saklıyor, böylece vektör arama ile normal sorgular aynı veritabanında çalışıyor. Arka plan işleri (vektör senkronu, yapay zekâ zenginleştirmesi, pazaryeri senkronu) otomatik yeniden denemeli ve üstel geri çekilmeli, Redis destekli kuyruklar üzerinden yürüyor; arayüzden ayrıştırıldığı için yavaş bir pazaryeri senkronu platformun geri kalanını engellemiyor.
Model seçimi
Gömülü RAG asistanı bilinçli olarak çoklu sağlayıcı kullanıyor: farklı görevler farklı modellerden geçiyor (rutin sohbet için ucuz bir modelden, daha karmaşık zenginleştirme işleri için ağır Claude ve GPT sürümlerine kadar) ve model başına token fiyatları takip edildiği için konuşma başına maliyet kara kutu olmak yerine görünür oluyor. Üretilen içerik (başlıklar, açıklamalar, çeviriler) her zaman önce bir inceleme adımından geçiyor — model önerir, insan onaylar; diğer projelerde fiyat mantığının da hiçbir zaman doğrudan bir dil modelinden geçmemesinin nedeni aynı.
Maliyet & gecikme
- Konuşma başına token maliyeti model bazında izleniyor; böylece pahalı modeller varsayılan olarak değil, bilinçli ve görünür biçimde kullanılıyor.
- Arka plan görevleri (vektör senkronu, zenginleştirme) en fazla 3 yeniden deneme ve üstel geri çekilmeyle asenkron çalışıyor; böylece geçici bir pazaryeri kesintisi doğrudan veri kaybına yol açmıyor.
- Vektör arama ve normal ürün sorguları aynı PostgreSQL örneğinde (pgvector) çalışıyor; bu da ayrı bir vektör veritabanını ve onun senkronizasyon katmanını gereksiz kılıyor.
Çıkarılan dersler
Yapay zekâ çeviri hattı, bir çeviri yeniden üretildiği anda kategori URL'lerini uyarı vermeden eziyordu — görünüşte SEO için iyiydi, ama mevcut dış bağlantıları kırıyordu. Geçmiş URL'ler geri getirilerek, yönlendirmeler eklenerek ve bu tür değişiklikleri artık yayına girmeden önce görünür kılan bir denetim kaydı kurularak çözüldü. İkinci hata: bir ürün NetSuite'e bağlandığı anda her NetSuite senkronizasyonu yapay zekâ tarafından üretilen içeriği ve Shopify değişikliklerini eziyordu — tek bir olay değil yapısal bir örüntü; her seferinde elle onarmak yerine senkronizasyon yönü gözden geçirilerek giderildi. Ve üçüncüsü, daha küçük ama öğretici: çeviri hattı "RVS" (paslanmaz çelik) gibi malzeme kısaltmalarını yanlış çeviriyordu; modelin alan bilgisini tahmin etmesine güvenmek yerine açık bir sözlük kuralıyla çözüldü.