AI & ML

Belge Kaosundan Canlı Veriye: Bir Masaüstü Köprüsünün Anatomisi

Masaüstünde, indirilenlerde ve Drive'da birikmiş faturalar, listeler, sözleşmeler... MindCro Bridge bu dağınıklığı izliyor, yerelde ayrıştırıyor ve kullanıcı onayıyla yapılandırılmış iş verisine çeviriyor. İşte mimarisi.

Yazan IWWOMI
· 13 dk okuma
Belge Kaosundan Canlı Veriye: Bir Masaüstü Köprüsünün Anatomisi

Her şirketin bir “belge çöplüğü” vardır. Masaüstünde fatura_son_FINAL_v3.pdf. İndirilenler klasöründe üç aylık tedarikçi Excel’leri. Drive’da kimin ne zaman yüklediği belli olmayan müşteri listeleri. Bu dosyaların içinde şirketin gerçek verisi durur — cari hesaplar, giderler, siparişler, personel bilgileri — ama hiçbiri veri değildir. Dosyadır. Aranamaz, filtrelenemez, raporlanamaz, başka bir kayıtla ilişkilendirilemez.

Bu verinin sisteme girmesinin klasik yolu bellidir: birisi dosyayı açar, okur ve satır satır bir yere elle girer. Küçük ekiplerde bu iş genellikle en değerli kişinin üzerine kalır, çünkü hangi satırın nereye ait olduğunu bir tek o bilir. Veri girişi, kimsenin bütçe kalemi olarak görmediği ama her ay sessizce ödenen bir vergidir.

MindCro projemizde bu problemi doğrudan hedefleyen bir bileşen geliştirdik: MindCro Bridge — arka planda sessizce çalışan, izlediğiniz klasörlerdeki belgeleri yakalayan, yerelde ayrıştıran ve sizin onayınızla MindCro modüllerine aktaran bir masaüstü uygulaması. Bu yazı, o uygulamanın nasıl çalıştığını ve yol boyunca verdiğimiz mimari kararları anlatıyor — çünkü kararların çoğu, belge otomasyonu kuran her ekibin karşılaşacağı türden.

Önce bağlam: MindCro nedir?

MindCro, ekiplerin iş süreçlerini konuşarak kurduğu, yapay zekâ merkezli bir yönetim paneli platformu. Sohbet üzerinden “tedarikçi takibi için bir tablo aç, şu alanlar olsun” diyorsunuz; platform tabloyu, kanban’ı veya listeyi sizin için inşa ediyor. Her yapı bir modül: Cari Hesaplar bir modül, Giderler bir modül, Projeler bir modül. Yapay zekânın iş operasyonlarını nasıl dönüştürdüğünü daha önce genel hatlarıyla yazmıştık; MindCro o fikrin ürünleşmiş hâli.

Ama panel ne kadar akıllı olursa olsun, veri hâlâ bir yerden gelmek zorunda. Kullanıcının günlük gerçekliği web paneli değil; masaüstündeki PDF, muhasebeciden gelen Excel, tarayıcıdan inen sipariş dökümü. Bridge, o gerçeklik ile yapılandırılmış modüller arasındaki köprü.

Kullanıcının gördüğü akış

Bridge’i kurup şirket e-postanızla giriş yapıyorsunuz — uygulama, e-posta alan adınızdan doğru firma ortamına kendi kendine yönleniyor, kimsenin sunucu adresi ezberlemesi gerekmiyor. Sonra izlemek istediğiniz klasörleri seçiyorsunuz: Masaüstü, İndirilenler, Drive’ın yerel kopyası, ağdaki ortak klasör — kaç tane isterseniz.

Sonrası şöyle işliyor:

  • Yakalama. İzlenen bir klasöre yeni dosya düştüğünde Bridge bunu yakalar ve kuyruğa alır. Sistem tepsisinden bir bildirim düşer: “3 yeni belge bekliyor.” Pencereyi kapatsanız bile uygulama menü çubuğunda yaşamaya devam eder.
  • Analiz — ama sadece siz isteyince. Kuyruktaki dosyalar kendiliğinden hiçbir yere gitmez. “Senkronize et” dediğinizde dosya yerelde ayrıştırılır ve yapay zekâ, firmadaki mevcut modüllerin şemasına bakarak bir plan üretir: bu belgeden hangi modüle hangi satırlar çıkarılmalı?
  • Önizleme ve düzeltme. Plan bir tabloda önünüze gelir. Her satırı tek tek işaretleyebilir, herhangi bir hücreye tıklayıp sağdan açılan panelde düzeltebilirsiniz. Sistemde zaten var olan kayıtlar mükerrer olarak işaretlenir, yanlışlıkla ikinci kez eklemezsiniz.
  • Onay. “Uygula” dediğinizde — ve ancak o zaman — kayıtlar MindCro’ya yazılır.

Tek bir faturanın birden fazla modülü beslemesi bu akışın en sevdiğimiz yanı. Bir tedarikçi faturası yüklediğinizde yapay zekâ aynı belgeden hem Cari Hesaplar’a tedarikçi kaydını, hem Giderler’e tutar satırını, hem Faturalar’a belge kaydını çıkarır. Biz buna çok modüllü kaskad diyoruz: bir belge, bir okuma, birden çok hedef.

Belge hiçbir modüle uymuyorsa? Modül açılır.

Asıl ilginç senaryo, belgenin mevcut hiçbir modüle uymadığı durum. Diyelim ki firmada araç takibi diye bir yapı yok ve siz bir araç filosu listesi yüklediniz. Klasik bir içe aktarma aracı burada pes eder: “eşleşen hedef bulunamadı.”

Bridge’in arkasındaki analiz katmanı ise pes etmek yerine yeni modül önerir: “Bu belge bir araç listesi gibi görünüyor. ‘Araç Filosu’ adında bir modül açalım mı? Önerdiğim alanlar: Plaka, Marka, Model, Muayene Tarihi, Sorumlu Personel.” Öneri; alan tipleri, hangi departmana bağlanacağı ve belgeden çıkarılmış örnek kayıtlarla birlikte gelir. Onaylarsanız modül o anda yaratılır ve kayıtlar içine akar. Yani sistem sadece veriyi mevcut yapıya dökmüyor; belgeye bakarak yapının kendisini genişletiyor. Kod yazmadan, form tasarlamadan, “BT’ye ticket açmadan.”

Bu, MindCro’nun sohbetle modül kurma yaklaşımının doğal uzantısı: platformda yapıyı konuşarak kuruyorsunuz, Bridge’de ise yapı belgeden kendiliğinden filizleniyor — son söz her zaman sizde olmak üzere.

Mimari: neyi neden böyle yaptık?

Bridge, Tauri 2 üzerine kurulu: Rust çekirdek + sistem WebView + React arayüz. Kurulum paketi yaklaşık 10 MB — aynı işi yapan bir Electron uygulamasının onda biri. Arka planda sürekli çalışacak bir araç için bellek ayak izi bir tercih değil, gereklilik.

Verdiğimiz kararların bazıları genel geçer, bazıları pahalı derslerin ürünü:

Ayrıştırma yerelde, Rust tarafında. .txt, .md, .pdf, .docx, .xlsx, .xls ve .csv dosyaları kullanıcının makinesinde okunur. Yapay zekâya ham dosya asla gitmez — yalnızca çıkarılmış metin ve tablo yapısı gider. Bu hem bant genişliği hem mahremiyet kararı: modele ne gönderdiğinizi bilmek ve sınırlamak, yapay zekâ çağında veri korumanın temel ilkesi hâline geldi. Belgenin kendisi hiçbir zaman makinenizi terk etmiyorsa, sızması da mümkün değildir.

Tembel ayrıştırma. Dosya yakalandığı anda ayrıştırma yapmıyoruz. İzlenen bir klasöre günde yüz dosya düşebilir ve kullanıcı bunların onunu içeri alacaktır. Ayrıştırma + AI çağrısı, kullanıcı “Senkronize et” dediğinde tek atomik adımda çalışır. Boşa CPU yakmamak ve boşa model çağrısı ödememek aynı kararın iki yüzü.

İki ayrı onay noktası — bilinçli olarak. AI analizi bir onayla başlar (çünkü model çağrısı para yakar), kayıtların yazılması ayrı bir onayla gerçekleşir (çünkü veritabanına dokunur). Bu iki kapıyı tek “sihirli otomasyona” indirgemek cazipti; direndik. Yapay zekânın çıktısı bir öneridir, hüküm değil. İnsan onayını akışın süsü değil omurgası yapmak, kullanıcı güveninin de düzenleyici savunulabilirliğin de en ucuz yolu.

Yarım dosya, çift dosya, aynı dosya. Klasör izleme kulağa basit gelir; değildir. Büyük bir dosya kopyalanırken yakalarsanız yarım içerik okursunuz — bu yüzden dosya olayları 1,5 saniyelik bir sükûnet penceresinden sonra işlenir. Aynı belge iki klasörde veya iki farklı adla durabilir — bu yüzden her dosyanın SHA-256 özeti alınır ve aynı içerik ikinci kez asla içeri alınmaz. Kuyruk, cihazda WAL modunda çalışan bir SQLite veritabanında tutulur; uygulama kapansa da bekleyen işler kaybolmaz.

Bütün API trafiği Rust’tan çıkar. Arayüzdeki React kodu tek bir fetch çağrısı yapmaz; tüm HTTP istekleri Rust çekirdeğinden atılır. Oturum token’ı macOS Keychain’de, Windows Credential Manager’da veya Linux Secret Service’te saklanır — arayüz katmanının eline hiç geçmez. Güvenli uygulama geliştirme yazımızda savunduğumuz ilke burada da geçerli: sırların yaşadığı katman ile kullanıcı arayüzünün yaşadığı katman aynı yer olmamalı.

Büyük belgeler parçalanır, paralel analiz edilir. Beş yüz satırlık bir Excel’i tek istekte modele vermek iki şekilde patlar: ya çıktı token sınırında kesilir ya da istek zaman aşımına takılır. Analiz katmanı belgeyi parçalara böler, parçaları paralel işler ve sonuçları birleştirir; model çıktısı da serbest metin yerine zorunlu araç çağrısıyla (structured output) alınır, böylece “kesilmiş JSON” diye bir hata sınıfı tamamen ortadan kalkar. Bu analiz işi API’nin içinde değil, ayrı bir AI gateway servisinde yaşar — servis sınırlarını sorumluluğa göre çizme yaklaşımımızın küçük ama net bir örneği: gateway’in işi AI, API’nin işi veri.

Dağıtım da otomatik. macOS (Apple Silicon + Intel) ve Windows paketleri, ana dala dokunan her masaüstü değişikliğinde GitHub Actions matrisiyle derlenir; uygulama yeni sürüm yayınlandığında kendini sessizce günceller. Bir masaüstü uygulamasının dağıtım hattı, bir web servisininkinden daha az disiplin gerektirmiyor — daha çok gerektiriyor, çünkü kullanıcının makinesine giren şeyi geri çekemezsiniz.

Bu neden önemli: veri girişi bir ürün problemi

Belge otomasyonu genellikle bir OCR/teknoloji problemi olarak sunulur. Bizim vardığımız sonuç farklı: bu bir güven tasarımı problemi. Kullanıcı, yapay zekânın belgesinden ne çıkardığını görmeden hiçbir şeyin veritabanına yazılmadığını bilirse sistemi kullanır. Bilmezse, en doğru model bile “acaba ne yaptı?” kaygısına yenilir.

Bu yüzden Bridge’deki her tasarım kararı aynı ilkeye hizmet ediyor: makine okur, insan onaylar. Önizleme tablosu, satır seçimi, hücre düzeltme, mükerrer işaretleri, iki aşamalı onay — hepsi aynı cümlenin farklı halleri. Ve bu ilke ölçekleniyor: tek belge için de çalışıyor, yirmi belgeyi paralel analiz edip tek önizlemede topluca onayladığınız toplu senkronizasyonda da.

Aynı veri, MindCro’nun mobil uygulamasında da anında görünür oluyor — masaüstünde onayladığınız fatura, sahadaki ekibin telefonunda bir kayıt olarak beliriyor. Köprünün asıl değeri bu: belge bir dosya olmaktan çıkıp, ekipteki herkesin eriştiği, filtrelediği, üzerine iş bağladığı canlı bir kayda dönüşüyor.

Kendi belge kaosunuz için

MindCro’yu ve Bridge’i mindcro.com üzerinden inceleyebilir, demo talep edebilirsiniz; projenin künyesi portföy sayfamızda da duruyor.

Daha genel ihtiyaçlar için: benzer bir “yakala → ayrıştır → öner → onayla → yaz” hattını kendi sisteminize kurmak istiyorsanız — belge kaynağınız, veri modeliniz ve uyum gereksinimleriniz ne olursa olsun — bizimle konuşun. Bu mimarinin hangi parçalarının sizin probleminize uyduğunu ilk görüşmede netleştirebiliriz.

Belgeleriniz klasörlerde yaşamayı bırakabilir. Veriniz çalışmaya başlayabilir.

Tüm yazılar
Paylaş
IWWOMI

Bir sonraki projeniz için konuşalım

Bu yazıdaki konularda ekibinizin yardıma ihtiyacı varsa, IWWOMI bir mesaj uzakta.

İletişime geç