~/bescript · vaka analizi
TEKNİK VAKA ANALİZİ · Ticari ürün, kaynak kod NDA kapsamında · Mimari ve çözümler aşağıda

LOJİSTİK · YAPAY ZEKA · CANLI SİSTEM

Tırdaş — WhatsApp'ta çalışan lojistik asistanı

Tır ve kamyon şoförlerinin yoldayken ihtiyaç duyduğu her şeye — yük bulma, hava durumu, mekan arama, gider takibi — uygulama indirmeden, doğal dille WhatsApp üzerinden ulaşmasını sağlayan otonom bir asistan. Şoför "Bolu'da yemek yenecek yer var mı?" yazar, sistem cevaplar.

Rolüm
Full-Stack · Veri · Mimari
Süre
Mart – Nisan 2026
Durum
Canlı · mağazalarda
Ekip
Tek kişi

Problem

neden bir uygulama değil de WhatsApp

Lojistik sektöründe yük ilanları WhatsApp gruplarında, serbest metin olarak dolaşıyor: 🚛 İZMİR -> ANKARA KAPALI KASA 15 TON gibi emojili, kısaltmalı, standart dışı mesajlar. Şoför bu grupları elle takip etmek zorunda.

Klasik çözüm bir mobil uygulama yazmak olurdu. Ama hedef kullanıcı kitlesi yolda, tek elle telefon kullanıyor ve yeni bir arayüz öğrenmeye isteksiz. Zaten açık olan uygulamaya gitmek, kullanıcıyı yeni bir uygulamaya taşımaktan çok daha düşük sürtünmeli.

Çözüm ve mimari

iki kanal, tek veri havuzu

Sistem iki parçadan oluşuyor: otonom bir Node.js backend servisi ve veriyi anlamlandıran bir Python (Streamlit) yönetim paneli. Gruplardan gelen yapılandırılmamış ilanlar yapay zeka ile JSON'a çevrilip veritabanına yazılıyor; hem bot hem mobil uygulama aynı havuzu okuyor.

node.jsexpressopenai gpt-4o-mini baileys / websocketspostgresql · supabase python · streamlitpandas · plotly google maps apipm2node-cron

Doğal dil ile yük eşleştirme

Yapılandırılmamış ilan metnini OpenAI ile analiz edip yapılandırılmış JSON'a çevirir, doğrular ve havuza yazar.

Konum bazlı hizmetler

Şoförün paylaştığı anlık konumdan en yakın lastikçi, dinlenme tesisi ve lokantayı Haversine formülü ile hesaplayıp Google Maps linkiyle sunar.

Otonom finans ve kota

Ücretsiz/premium üyelik, günlük ve aylık API sorgu kotaları ile sanal cüzdanı insan müdahalesi olmadan yönetir.

Gerçek zamanlı yönetim paneli

Bağlantı durumu izleme, şüpheli ilan onayı, canlı destek için AI-bypass ve kod değişmeden sistem metinlerini güncelleyen no-code prompt arayüzü.

Çözülen mühendislik problemleri

bir chatbot yazmanın ötesi — eşzamanlılık, maliyet ve dayanıklılık

1. WhatsApp anti-ban ve spam koruması

Zorluk

WhatsApp politikaları gereği bir botun insan doğasına aykırı hızda cevap vermesi hesabın kapatılmasına yol açar. Ayrıca kötü niyetli kullanıcıların aşırı mesaj göndermesi OpenAI maliyetlerini patlatabilirdi.

Çözüm
  • Split-Cache + Concurrency Lock: Mükerrer uzun mesajlar 15 dakika, kısa komutlar 5 saniye önbellekte tutulup işleme alınmadan sessizce düşürülür.
  • İnsan davranışı simülasyonu: Mesajın karakter sayısına göre hesaplanan dinamik composing süresi ve gecikmeli readMessages ile doğal bir ritim kurulur.
  • Kademeli susturma: 5 dakika → 30 dakika → 24 saat şeklinde üç aşamalı otonom muting algoritması spam yapanı kendiliğinden cezalandırır.

2. LLM halüsinasyonu ve veri standardizasyonu

Zorluk

Şoför jargonundaki şehir adları ("Antep", "İzmit", "Kazan") ya da alakasız sohbet mesajları yapay zeka tarafından yanlış şehir veya geçerli yük ilanı olarak algılanıyordu.

Çözüm
  • CityValidator katmanı: Yapay zeka ile veritabanı arasına giren doğrulama katmanı, tüm çıktıyı Türkiye'nin 81 il ve 973 ilçesini tutan bir hash-map üzerinden geçirir; jargonu otonom düzeltir (Antep → Gaziantep).
  • Katı prompt kuralları: "Başlıklı Liste Kuralı" ve "Yön Ayraçları" gibi kesin kurallar tanımlandı.
  • Şüphe kuyruğu: Doğruluğu şüpheli ilanlar yayınlanmak yerine yönetim panelindeki "Onay Bekleyenler" sekmesine düşürülür — hatalı veri havuza hiç girmez.

3. Veritabanı ve panel performansı

Zorluk

Binlerce mesaj ve ilanın panelde gerçek zamanlı listelenmesi, her sayfalamada ağır COUNT(*) sorguları üretip sistemi kilitliyordu.

Çözüm
  • B-Tree indexler: Sık sorgulanan created_at, status, phone_id sütunlarına eklendi.
  • Önbellekleme: @st.cache_data(ttl=300) ve @st.cache_resource ile ağır ayar dosyaları, CSS ve analitik sayımlar RAM'e alındı.
  • Connection pooling: pool_size=10 bağlantı havuzu kuruldu. Panel tepki süresi %300 hızlandı.

4. Hata yönetimi ve sistem dayanıklılığı

Zorluk

Google ve OpenAI tarafındaki kota aşımları ya da ağ kopmalarında botun çökmemesi, verinin kaybolmaması gerekiyordu.

Çözüm
  • Retry pattern: PostgreSQL bağlantısı artan gecikmelerle üç kez yeniden denenir.
  • Dostane bozulma: Kritik hatalarda (örn. 429 Too Many Requests) kullanıcıya "Şu an sistem yoğun" döner — hata kullanıcıya sızmaz.
  • Otonom alarm: Aynı anda Telegram Bot API üzerinden yöneticiye anlık hata bildirimi gider. Sistem kendi hatalarını raporlar, kendi yedeğini alır.

Kazanımlar

bu projeden çıkardıklarım

AlanKazanım
LLM kullanımıYapay zekayı chatbot olarak değil, yapılandırılmamış veriyi işleyen bir veri ayrıştırma motoru olarak kullanmak
EşzamanlılıkGerçek zamanlı ve asenkron veri akışlarında race-condition ve rate-limit problemlerini çözmek
Hibrit mimariPython'un veri işleme gücü ile Node.js'in asenkron I/O'sunu tek sistemde birleştirmek
OtonomiKendi hatalarını raporlayan, kendi yedeğini alan self-healing sistemler kurmak

Sistemi kendin dene

İnteraktif demoda iki telefon yan yana — bota yaz, uygulamada gez.