Ana içeriğe atla
LeadsUp
Blog'a dön

KVKK uyumlu chatbot mimarisi — 2026 sahada ne yapıyoruz

TR veri yerleşim, açık rıza akışı, veri silme talebi endpoint'i, 6 ay PII redaction + 2 yıl hard delete. LeadsUp'ın KVKK uyumu için pratik mimari.

LeadsUp Team

Compliance + Engineering

16 Mayıs 20265 dk okuma

Neden ayrı bir KVKK yazısı?

Çoğu chatbot platformu "GDPR ready" der ama Türkiye'deki KVKK (6698 sayılı kanun) özel yükümlülükler içerir: veri yerleşim (Türkiye veya AB), açık rıza, aydınlatma metni, veri silme talebi 30 gün içinde, veri ihlal bildirimi 72 saat içinde Kurul'a.

LeadsUp KVKK'ya 2024-Q3'te uyumlandı. Aşağıda mimari karar kayıtları + pratik notlar.

1. Veri yerleşim

Karar: Tüm tenant verisi Frankfurt (Hetzner CX22) veya İstanbul (alternatif sağlayıcı). Backup'lar aynı bölgede. Cross-region replication yok (data localization).

Pratik: Postgres single-region, S3-uyumlu Hetzner Object Storage, Redis aynı VPC. Sentry tarafında veri scrubbing zorunlu — PII Sentry'ye gönderilmez.

2. Açık rıza akışı

İlk gelen mesajda otomatik aydınlatma mesajı atılır:

Merhaba! Ben {{bot_name}}, {{firma_adi}} yapay zekâ asistanı.

Bu sohbetteki mesajlarınız, sizinle iletişim kurabilmemiz için
saklanır (6698 sayılı KVKK çerçevesinde). Detaylı bilgi:
{{firma_kvkk_url}}

Devam etmek için "Evet" yazın.

Bu mesajdan sonra kullanıcı "Evet" yazana kadar bot veri toplamaz (sadece kayıt: audit_logs.event_type = 'kvkk_consent_pending'). Onay alındıktan sonra users.kvkk_consent_at = NOW() set edilir.

Önemli: WhatsApp / Instagram'da konuşmaya kullanıcı başladığı için (in-bound), "rıza" prosedürü teknik olarak gerekmiyor diye savunan firmalar var. Biz conservatively rıza alıyoruz — Kurul'un yorumu net değil, riske girmiyoruz.

3. Veri silme talebi

KVKK md. 11: kişi 30 gün içinde verisinin silinmesini isteyebilir.

LeadsUp'ta 3 yöntem:

a. Kullanıcı kendisi siler (self-service)

Kullanıcı bota yazar: "verilerimi silin"
Bot tespit eder (regex + intent) → transfer_to_agent + audit_logs kayıt
Agent panelden "Veri silme onayı" tıklar
Worker async siler: messages + users + audit retention 30g'ye düşer

b. Email talebi

kvkk@{{tenant_domain}} adresine gelen email otomatik deletion_requests tablosuna düşer. Tenant admin email bildirimi alır.

c. Manual support

Müşteri firma destek hattına yazarsa, agent panelden manuel silme butonunu tıklar.

Süre: 30 gün maksimum. Çoğu vakada anlık (worker 5 dakikada işler).

4. PII redaction (6 ay sonra)

Audit log'lar 2 yıl saklanır (KVKK soruşturmaları için), ama 6 ay sonra içlerindeki PII (telefon, e-posta, isim) hash'lenir. audit_logs.payload JSONB içindeki:

UPDATE audit_logs
   SET payload = jsonb_set(
     payload,
     '{phone}',
     to_jsonb(sha256(payload->>'phone')::text)
   )
 WHERE created_at < NOW() - INTERVAL '180 days'
   AND payload ? 'phone';

Cron her gün çalışır.

5. 2 yıl sonra hard delete

audit_logs.created_at < NOW() - INTERVAL '2 years'DELETE. Sadece analiytics olmayan event'ler kalır (anonim aggregate metrikler).

6. Veri ihlal müdahale (72 saat)

KVKK md. 12: ihlal durumunda 72 saat içinde Kurul'a bildirim.

LeadsUp'ta ihlal tespiti:

  • Sentry kritik alert kategori (ör. RLS bypass, DB connection leak)
  • CodeQL + Trivy weekly security scan (PR'larda blocking)
  • Failed login monitoring — 10+ aynı IP'den failed login → Slack alert
  • API key abuse — 1000+ req/dakika tek tenant → throttle + Slack

Tespit edildikten sonra incident_response.md runbook çalışır: scope tespiti, etkilenen tenant listesi, stakeholder email template, Kurul bildirimi PDF formu (önceden hazır).

7. KVKK uyumlu sub-processor listesi

LeadsUp 3rd-party'leri:

Sub-processorVeri yerleşimKVKK uyumu
Anthropic ClaudeAB / ABDDPA imzalı, EU Standard Contractual Clauses (SCC)
OpenAI WhisperABDDPA imzalı, SCC
StripeİrlandaEEA DPA
SentryABDPA imzalı
HetznerAlmanyaEEA
ResendABDDPA + SCC

ABD provider (Anthropic, OpenAI, Stripe, Resend) için SCC zorunlu. BYOK seçen tenant'ın LLM API key'i kendi hesabında — bizim sub-processor değil.

8. Tenant DPA template

Her LeadsUp müşterisine Data Processing Agreement (DPA) sağlanır:

  • Tenant = Veri Sorumlusu
  • LeadsUp = Veri İşleyen
  • Süre = abonelik süresi + 30 gün retention
  • Audit hakkı = yılda 1 kez, 30 gün önceden bildirim
  • Sub-processor değişimi = 30 gün önceden bildirim, opt-out hakkı

/legal/dpa adresinde signed PDF olarak indirilebilir.

9. Sandbox'ta test (Meta'sız 5 dakika)

KVKK uyumu sandbox'ta da çalışır:

1. Portal'da Sandbox sekmesi
2. "Aydınlatma akışını test et" toggle
3. Test mesajı gönder → bot KVKK metnini önce atar
4. Kullanıcı simülasyonu "Evet" yazar → sohbet başlar

Production'a geçmeden önce tenant kendi KVKK metnini girer (tenants.kvkk_notice_text). Default Türkçe template hazır.

10. Hatalar — sık yapılan

  1. Aydınlatma metnini Meta template'i yapmak — onaylanmıyor (marketing kategorisi). Free-form mesaj kullan, ilk in-bound geldiğinde otomatik bot atar.
  2. Veri silme talebine 30 gün üzeri yanıt — Kurul cezası riski (max 5M ₺). Worker SLA monitoring + Slack alert.
  3. Backup'larda silme yapmamak — Daily backup retention 7 gün; deletion request öncesi 7 gün backup'ları da temizlenir.
  4. 3rd-party'lere PII göndermek — Anthropic / OpenAI'ya telefon / e-posta içermeyen sanitize edilmiş mesaj atılır (piiRedact() fonksiyonu).

LeadsUp özet

  • Türkiye veri yerleşim: Frankfurt + İstanbul opsiyon
  • Otomatik aydınlatma: İlk mesajda atar
  • Self-service silme: Bot tespit + agent onay, max 30g
  • PII redaction: 6 ay
  • Hard delete: 2 yıl
  • DPA: signed, downloadable
  • SCC: Tüm ABD sub-processor'lar için

KVKK uyumu detayı sayfasında.

Sorularınız için: kvkk@leadsup.digital

LeadsUp ile aynı sonuçları kendi botunuzda görün

14 gün ücretsiz. Kredi kartı gerekmez.

Ücretsiz dene