İçeriğe atla
megapromotingHadi konuşalım

Uzmanlık · Özel yazılım

Kuruluşunuzun çalışma biçimine göre kurulmuş, genel kullanım için değil.

Piyasadaki hiçbir ürün uygun olmadığında sıfırdan sistemler kuruyoruz: birden fazla uygulamadan oluşan ve ortak bir veritabanına sahip platformlar, API’si olmayan sistemlere bağlayıcılar, belgeleri ve para hareketlerini okuyan iş akışları ve çıktısı bir ekran değil, bir üretim dosyası olan programlar. Sonunda depozitoyu, devreye alma belgesini ve erişimleri teslim ediyoruz.

Zaten kurduklarımızAm ales patru sisteme proprii din discipline diferite, tocmai ca să nu arate ca patru variante ale aceluiași site, și am rulat testele fiecăruia azi. Un monorepo cu 3 aplicații și 12 pachete, 486 de fișiere TypeScript și 68 de fișiere de test, 151 de comituri, arbore de lucru curat. Un sistem de interogare a două portaluri B2B fără API public: 38 de teste trecute în 0,52 s, pe răspunsuri reale salvate ca fixturi. O conductă care citește notificări bancare din e-mail și PDF și le scrie în Postgres cu deduplicare prin amprentă. Și un generator de documentație de inginerie, în Python, cu 44 de teste trecute în 0,50 s. Cifrele sunt din rulările mele de pe 6 septembrie 2026, nu din README-uri.

“Özel” demek, sistemin insanların zaten çalışma biçimine göre yazılması, tersine değil. Önceden açıkça söylememiz gereken bir maliyeti var: birinin onu sürdürmesi gerekir ve o kişi ya biziz ya da sizin ekibiniz. Bu yüzden size sorduğumuz ilk soru ne inşa etmek istediğiniz değil, zaten işin %80’ini yapan bir ürünün olup olmadığıdır. Varsa, bunu söyleriz; bu, işi bize vermemeniz anlamına gelse bile. O sorudan geriye kalan kısım — satın alınmayan parça — tam olarak iyi inşa ettiğimiz şeydir.

Kapsam, teknoloji listesinden çok dört farklı sistemle daha net görünür. İlki bir performans kurumu için platformdur: üç uygulamalı bir monorepo (kamu sitesi, idari kabin, API) ve on iki ortak paket — biletler, ticaret, içerik, bildirimler, iade işlemleri, güvenlik. İkincisi, hiçbir API yayınlamayan tur operatörlerinin B2B portallarını talep üzerine sorgular: programatik kimlik doğrulama, oturum süresi dolduğunda girişe geri dönme ve gerçek olarak yakalanmış dosyalardaki yanıtlarda test edilmiş bir analizci. Üçüncüsü e-posta ve PDF ekstrelerinden banka bildirimlerini okur ve bunları Postgres’e yerleştirir. Dördüncüsünün hiç ekranı yok: bir endüstriyel makinenin modelini, malzeme listesini ve çizimlerini oluşturan programdır.

Bir böyle bir sistemi ayakta tutan şey yığın değil, ilk ekrandan önce yazılmış kurallardır. Gösteri kurumu için platformda, uygulama sözleşmesi normalde her toplantıda yeniden pazarlık edilen şeyleri metin içinde sabitler: paralar, para birimi yanında olmak üzere, tam küçük birimlerde tutulur; bir yerin kullanılabilirliği yalnızca veritabanındaki kalıcı bir rezervasyonla belirlenir, hiçbir zaman önbellekten değil; kritik komutların idempotency anahtarları vardır; P0 ve P1 yolları açık değil kapalı düşer; kart verileri hiçbir zaman saklanmaz. Bu kurallar başlangıçta yazılır çünkü sonunda yazılsalardı, sistemin yeniden yazılması anlamına gelirdi.

Sonunda üç şey teslim edilir, bir değil: tüm geçmişiyle depo, boş bir sunucuda nasıl devreye alınacağını anlatan belge ve erişimler. Proje dizinimizin altında 150 git deposu, 103 README dosyası ve 19 devreye alma veya teslim belgeleri vardır — bugün sayılmıştır, tahmin edilmemiştir. Sahiplik kuralını başlamadan önce sözleşmeye yazarız ve basittir: sizin için özel olarak yazılan kod sizindir, üçüncü taraf kütüphaneler kendi lisansları altında kalır, yeniden kullanılabilir bileşenlerimiz ve ürünlerimiz ise devredilmez, lisanslanır. Çalışmanın bir kısmı bizim bir ürünümüzle daha iyi çözülüyorsa, bunu size tam olarak böyle söyleriz; böylece en baştan ne satın aldığınızı ve ne aldığınızı bilirsiniz.

Neleri kapsıyor

Çalışma, bileşenlerine ayrılmış hâliyle

Alan kurallarını ilk ekrandan önce yazarız

Sözlüğü ve değişmezleri sabitleyen, metin içinde bir uygulama sözleşmesi: rezerve edilmiş bir yer ne demektir, tahsil edilmiş bir ödeme ne demektir, bir hizmet yanıt vermediğinde neyin kapalı düştüğü ne demektir. Gösteri kurumu için platformda kurallar açıktır — paralar tam küçük birimlerde artı para birimi, kullanılabilirlik yalnızca veritabanındaki kalıcı rezervasyonlardan, kritik siparişlerde idempotency anahtarları, önbellek stok için hiçbir zaman doğruluk kaynağı değil, kart verileri ise hiçbir zaman saklanmaz. Bunlar kodda doğrulanan kurallardır, ilkeler değil.

Çekirdeği, canlı sistem olmadan çalışan testler üzerine kurarız

Harici sistemlerin gerçek yanıtları fixture olarak kaydedilir ve ayrıştırıcı onlarla test edilir, çalıştığınız gün tam da kapalı olabilecek portal üzerinde değil. Uçuş portalları sorgulama sisteminde, test paketi 0,52 saniyede çalışır ve tamamen geçer; gerçekten portallara dokunan testler ayrı işaretlenir ve açıkça istenir. Aynı ayrım dört sistemin hepsinde vardır: tezgâh üzerinde doğrulanabilecek şey tezgâh üzerinde doğrulanır.

Depoyu, devreye almayı ve erişimleri teslim ederiz

Bir zip dosyası değil. Commit geçmişiyle birlikte depo, sistemi boş bir makinede nasıl ayağa kaldıracağını anlatan bir belge — veritabanı, ortam değişkenleri, sistem hizmeti, önde web sunucusu — ve onu size ait yapan erişimler. Proje dizinimizin altında bugün 150 git deposu, 103 README ve 19 DEPLOY ya da HANDOVER türü belge vardır; bu teslim biçimi istisna değil, alışkanlıktır.

Karşı tarafın sisteminde API yoksa, hangi riski aldığınızı söyleriz

Sorguladığımız B2B portalları programatik bir arayüz yayınlamaz, bu nedenle kimlik doğrulama bir kullanıcınınki gibi, oturum çerezi ve bağlantı anahtarıyla yapılır ve süresi dolduğunda otomatik olarak yenilenir. Risk proje README'sinde yazılıdır, sonradan keşfedilmez: programatik kimlik doğrulama, portalın kullanım koşullarına karşı gri bir alandır ve yoğun üretim hacmi için doğru çözüm, operatörden resmi API'sini istemektir. Bir müşterinin bunu imzalamadan önce öğrenme hakkı vardır, sonradan değil.

Belgeler, onları on kez okusak bile, yalnızca bir kez içeri alınır

Bir banka bildirimi ya da PDF ekstreden çıkarılan her işlem, alanları üzerinde SHA-256 amprenti olarak hesaplanan bir dış kimlik alır ve Postgres'e ekleme `ON CONFLICT (external_id) DO NOTHING` ile yapılır. Pratik sonuç: posta kutusu istediğiniz kadar yeniden okunabilir ve bakiye ikiye katlanmaz. Bu kural olmadan, herhangi bir ingest hattı çiftler üretmeye başlar, yani bir muhasebe sorunu.

Modelle sınıflandırma, serbest metinle değil araçlarla yapılır

Model bir cümle yazmaz, sonra onu bizim tahmin etmemiz gerekmez: yedi araç alır — müşteriden ödeme, maaş, vergi, alacaklıya ödeme, işletme gideri, bilinmeyen — ve 0 ile 1 arasında bir güven skoru ile birini seçmek zorundadır. Karşı taraf adlarının yaklaşık eşleşmesi için, vektör benzerliğine dayalı ayrı bir rezerv vardır. „Bilinmeyen”, gizli bir başarısızlık değil, gerekçeli meşru bir çıktıdır.

Bazen sonuç bir ekran değil, bir dosyadır

Python'da özel bir sistem, endüstriyel bir makinenin üç boyutlu modelini, her pozisyon için serbest bırakma durumuyla birlikte malzeme listesini, kontrol planını, kablo şemasını ve PDF çizimlerini tek bir komutla üretir; böylece pakette hiçbir şey modelin gerisinde kalamaz. Yarım saniyede geçen 44 testi vardır ve yalnızca kodu değil, mühendislik kurallarını da doğrular: aktif alanın tam bir metreküp olması, malzeme listesindeki hiçbir pozisyonun kontrol satırı olmadan kalmaması, makinenin dururken asla ekstrüde etmemesi.

Sürekli ölçüm, isteğe bağlı sorgulamadan farklı bir disiplindir

Özel bir sistem, `ffmpeg` ile aynı anda birden fazla radyo istasyonunu yakalar, açık kaynaklı bir modelle yerel olarak deşifre eder, ardından Romence ve Rusça sinyal grupları üzerinde şeffaf bir skorla reklamları arar; yapılandırılabilir bir eşik vardır ve aynı reklamın farklı istasyonlarda yayınlanan kopyalarını, transkripsiyonlar farklılaştığı ama ses aynı olduğu için, chromaprint türü bir ses parmak iziyle gruplandırır. 1,14 saniyede geçen 81 testi vardır. Gözetimsiz çalışan bir sistemin kapsama sayaçlarına, görev kiralama ile yeniden denemelere ve bir ototeste ihtiyacı vardır; aksi halde bozulduğunda sessiz kalır.

Ayrıca ne kurmadığımızı da söyleriz

Daha büyük iş olur diye, mevcut bir ürünle çözülebilecek bir şeyi, bize ait olsun ya da başkasına ait olsun, sıfırdan kurmayız. İlk aşamanın sonuna kadar yerel olarak, test verileriyle çalıştıramayacağımız sistemleri devralmayız. Ve dış bir sağlayıcıya bağlı bir sistemi, o sağlayıcının hangi public gate’i olduğunu kontrol etmeden başlatmayız — o kontrol ilk adımdır, sonuncu değil.

Nasıl görünüyor

Süreç, adım adım.

01

Kapsamı belirler ve kuralları yazarız

Sistemleri okuyup bugün işi yapan insanlarla konuşma aşaması; sözlük, değişmezler ve kapalı kalanların kısa bir belgeyle bitirilmesi. Bu belgeyi, kurulum aşamasına geçilmese bile teslim ederiz — biz olmadan da faydalıdır. Buna, işin bağlı olduğu dış sistemlerin listesi ve her birinin hangi public gate’e sahip olduğunun doğrulanması da girer; çünkü sürprizler oradan gelir.

02

Çekirdeği, ekranlardan önce testleriyle birlikte kurarız

Alan kuralları, veri modelleri, ayrıştırıcılar, hesaplamalar — ayrıca canlı sistemler olmadan çalışan, gerçek yanıtlardan yakalanmış fixture’lar üzerindeki testler. Çalıştırma komutuyla birlikte test paketini ve sonucunu teslim ederiz; böylece siz de çalıştırabilirsiniz. Üretim ortamı olmadan test edilemeyen bir çekirdek, daha sonra hızlıca onaramayacağımız bir çekirdektir.

03

Çekirdeğin üzerine arayüzü ve entegrasyonları koyarız

Yönetim paneli, herkese açık ekranlar, diğer sistemler için giriş noktaları. Burada dış sağlayıcılar bağlanır; her biri için ayrı bir adaptör ve bir simülasyon sürümü olur, böylece sistem gerçek hesaplar olmadan bütünüyle çalıştırılabilir. Yerel çalıştırma yöntemini de, veritabanı ve hizmetler konteynerlerden kaldırılmış halde teslim ederiz.

04

Devreye alır ve teslim ederiz

Kararlaştırılan altyapıya kurulum, sistem servisi, önde web sunucusu, günlükler ve döndürülmeleri, ototest. Ardından teslim: depo, boş bir makine için yazılmış devreye alma belgesi, erişimler ve yapılacak kalanların gözden geçirilmesi. İşe alınmamış olanlar, söylenmeden bırakılmaz; liste olarak yazılır.

IntrareVerificareDeciziePublicareNimic nu trece mai departe neverificat.ORDINEA E ARGUMENTUL
Trei pași și ordinea lor, care e jumătate din lucrare. Întâi regulile domeniului scrise în text — ce înseamnă un loc rezervat, cum se țin banii, ce cade închis când un serviciu tace. Apoi nucleul cu testele lui, care rulează pe răspunsuri reale salvate ca fixturi, fără sistemele vii. La final punerea în funcțiune și predarea: depozit, documentul pentru o mașină goală, accese. Săgeata înapoi de la pasul trei la pasul unu e reală: ce se descoperă la punerea în funcțiune schimbă regulile, nu se ascunde sub ele.

Veriler

Neye dokunuyoruz, nerede duruyorlar ve ne kadar kalıyorlar

Veri koruma sorumlusu olan herkesin soracağı sorular — o sormadan önce burada sorulmuş hâliyle.

Nerede çalışır ve anahtarı kim tutar
Sistem, başlangıçta yazılı olarak kararlaştırılan altyapıda çalışır: sizin sunucunuz, bizim yönettiğimiz bir sunucu veya birlikte seçilen bir hosting sağlayıcısı. Yukarıdaki dört sistem birbirinden farklı çalışır — biri bir web sunucusunun arkasında sistem servisi olarak, biri konteynerlerden, biri yerel bir makinede zamanlanmış işlem olarak, biri ise yalnızca komutla, iş istasyonunda. Seçim, alışkanlıktan değil, veri kısıtlarından yapılır.
Kimlik bilgileri kodda durmaz ve mümkün olan yerlerde diskte de durmaz
Parolalar ve anahtarlar ortam değişkenlerinden okunur; bunları içeren dosya da geçerli kullanıcıyla sınırlandırılır. Dış bir sisteme giden bir bağlayıcıda, oturum jetonu yalnızca bellekte tutulur ve süresi dolduğunda ya da ilk reddedilmede yenilenir — parola ve jeton hiçbir dosyaya yazılmaz. Kural revizyonda doğrulanır: depoya ulaşmış bir anahtar, bir kaçış değil, bir olaydır.
Belgelerden gelen veriler
Sistem e-posta ya da PDF okuduğunda, gerçek iş verilerine dokunur: tutarlar, takvim tarihleri, karşı taraf adları, hesap numaraları. Bunlar, her kayıt için tekrarlanamayan, kendine ait bir tanımlayıcıyla ve kaynaktan yeniden oluşturulabilecek şekilde, yararlanıcının veritabanında saklanır. Dış bir modele giden şey, eğer biri kullanılıyorsa, işlem açıklamasıdır — bütün belge değil ve ek değil.
Nelerin saklandığı ve ne kadar
Saklama süresi global olarak değil, veri türüne göre belirlenir ve devreye almadan önce yazılır: iş kayıtları yararlanıcının yasal yükümlülüklerine göre, teknik günlükler kısa bir zaman penceresi için, ara dosyalar — ses kayıtları, indirilen ekler — otomatik temizlikle tutulur. Silme politikası olmayan bir sistem, altı ay içinde, çözdüğü sorundan daha büyük bir risk haline gelir.
Teslimden sonra bizde ne kalır
Teslimden sonra sistemlerinize erişimimiz yalnızca bunu gerektiren bir bakım sözleşmesi varsa vardır ve o sözleşme sona erdiğinde kaldırılır. Çalışma kopyaları kendi istasyonlarımızdan talep üzerine silinir. Her durumda sakladığımız şey, yazdığımız ve sizin verilerinizi içermeyen genel bileşenlerdir — ve bunları da en baştan beyan ederiz, böylece sonunda sürpriz olmaz.

Bir vaka

İki portal için API’si olmayan bir sorgulama sistemi

Durum

Bir turizm acentesinin, talep üzerine, iki tur operatörünün B2B portallarındaki koltuk uygunluğu ve charter seferleri için tarifelere ihtiyacı vardı. Portallar insan gözü için tasarlanmış: giriş yaparsınız, ararsınız, bir tablo okursunuz. Yayınlanmış programatik bir arayüz yoktu ve bilgi, bir insan tarafından günde birkaç kez manuel olarak yeniden okunuyordu.

Ne kurduk

Programatik olarak kimlik doğrulayan ve süresi dolduğunda oturumunu kendi kendine yenileyen bir istemci, yanıtları nesnelere dönüştüren bir çözücü ve kodu şehir ile limandan oluşan, bazı çağrıların ise iki parçayı ayrı ayrı istediği havaalanları için bir tanımlayıcı katmanı yazdım. Bunların üzerine: uygunluk ve fiyatla tam bir rotayı döndüren bir komut satırı, hesabın kilitlenmemesi için aralarında beklemeler olan toplu istek modu ve başka bir platformun sonucu kullanmak istemesi durumunda iki JSON giriş noktası. Çözücü, depoda fixture olarak kaydedilmiş gerçek yanıtlarda test edilir; portalara gerçekten dokunan testler ise ayrı olarak işaretlenir ve varsayılan olarak çalışmaz.

Ne çıktı

Süit eksiksiz geçer: 0,52 saniyede 38 kontrol, portallara dokunmadan. Bir istek, portalın kullandığı dört durumdaki uygunluğu ve istenen para biriminde sınıf ve bagajla birlikte ücreti tek bir yanıtta döndürür. Sonuç komut satırından, JSON olarak ya da iki HTTP giriş noktası üzerinden kullanılabilir.

Vakanın söylemedikleri

Programatik kimlik doğrulama, portalların kullanım koşullarına göre gri bir alan olarak kalır ve bu, teslimattan sonra öğrenilmez, projenin README dosyasında yazılıdır. Yoğun üretim hacmi için önerimiz açıktır: operatörlerden resmî API istenir. Sistem noktasal istekler yapar ve aralarına beklemeler koyar, tam da toplu çıkarma aracına dönüşmemesi için.

Sorular

İnsanların aramadan önce bize sordukları

Bu sayfada neden fiyat yazmıyor?

Çünkü bunu dürüstçe yazamazdık. Özel yapım bir sistemin maliyeti, bakmadan önce bilmediğimiz üç şeyle belirlenir: kaç dış sistemin erişilmesi gerektiği ve bunlardan herhangi birinin API’si olup olmadığı, zaten bir yerde yazılı kaç iş kuralının olduğu ve kaçının insanlardan öğrenilmesi gerektiği, ve teslimden sonra sistemi kimlerin yaşatacağı. Sistemi görmeden verilen bir sayı, faturası olan bir tahmindir. Hızlıca yapabileceğimiz şey ilk aşamadır — okuma, sınırlandırma, kuralları yazma — bu doğru şekilde tahmin edilir ve orada dursanız bile yararlı kalır.

Sonunda kodun sahibi kim olur?

Sizin için özel olarak yazılan kod, depo ve geçmişiyle birlikte sizin olur. Üçüncü taraf kütüphaneler kendi lisansları altında kalır — onları size devredemeyiz, çünkü bizim değiller. Yeniden kullanılabilir bileşenlerimiz ve mevcut ürünlerimiz kullanım için lisanslanır, devredilmez; çalışmanız bunlardan birine dayanıyorsa, bunu başlangıçtan önce, yazılı teklifte söyleriz, son toplantıda değil.

Başka biriyle devam etmek istersek ne olur?

Teslim, bunu biz olmadan mümkün kılmalıdır; aksi halde teslim yapılmamış demektir. Bu nedenle devreye alma belgesi boş bir makine için yazılır ve kafamızdaki hiçbir varsayımı içermez; testler ise depo içinde kalır ki sonraki ekip değişiklik yaptığında neyin bozulduğunu bilsin. Söz veremeyeceğimiz şey, karmaşık bir sistemin zahmetsizce devralınmasıdır — yalnızca devralınması için gereken hiçbir şeyin eksik olmayacağını söz verebiliriz.

Kaliteyi değerlendirmek için sizin yaptığınız bir sistemi görebilir miyim?

Kısmen, ve sınırın nerede olduğunu söylemek doğrudur. Müşteriler için yapılan sistemler, göstermek için bize ait değildir; iç sistemler ise gerçek iş verileri içerir. Sizin önünüzde, ekranda yapabileceğimiz başka bir şey var: depoyu açarız, metin olarak yazılmış alan kurallarını gösteririz, test süitlerini çalıştırırız — birinde yarım saniyede 38, diğerinde bir saniyeden biraz fazla sürede 81, üçüncüde 44 — ve şüphe duyduğunuz iddiayı yapan kodu birlikte okuruz. Bu site de, dışarıdan incelenebilen kendi sistemimizdir.

Eski sistemimizin API’si yok. Bir şey yapılabilir mi?

Normalde evet, ama beyan edilmiş riskle. Sıra şöyledir: önce sağlayıcının, kamuya açık biçimde belgelememiş olabileceği resmî bir API’si olup olmadığını sorarız — bu sık olur. Yoksa, bir kullanıcı gibi programatik kimlik doğrulama yoluyla, otomatik yenilenen oturumla çalışılabilir; böyle bir sistemi iki B2B portalını sorgulayacak şekilde kurduk. O zaman size bunun sağlayıcının kullanım şartlarına göre gri bir alan olduğunu ve yüksek hacim için sürdürülebilir çözümün resmî API’yi istemek olduğunu açıkça yazarız. Karar size kalır, ama bilgili bir karar olur.

Yazılımı yazması için yapay zekâ mı kullanıyorsunuz?

Evet, ve bunu gizlemiyoruz. Önemli olan bunun hangi kurallar altında yapıldığıdır: her iş parçası çalışan testlerle, tip denetimiyle ve commit’ten önce farkların gözden geçirilmesiyle kapatılır; sınırlar depoya yazılır — işin içinden üretime yayın yok, dış hesaplarda değişiklik yok, sağlayıcı adaptörleri yalnızca simülasyon sürümüyle. Hızlı yazılmış ve doğrulanmamış bir kod, yavaş yazılmış bir koddandan daha pahalıdır. Burada satılan şey, sıkıcı taraftaki hızdır; doğrulamanın yokluğu değil.

Ortada ilk fikrin yanlış olduğu ortaya çıkarsa ne yapıyorsunuz?

Söyleriz. Kendi mühendislik projemizde, değerlendirmeden sonra aynı sorun için tamamen farklı ikinci bir mimariye ulaştık ve bunu, herhangi bir komuttan önce geçilmesi gereken geçitlerle birlikte belgelenmiş bir alternatif olarak yazdık; sırf zaten başlamış olduğu için ilkinde devam etmedik. Yön değiştirmenin yarı yolda maliyeti, yanlış biçimde teslim edilmiş bir sistemin maliyetinden daha düşüktür; farkı her iki durumda da faydalanıcı öder.

İş ne kadar büyük olabilir?

Bir uçta, tek bir depoda üç uygulama ve on iki ortak paket içeren, 486 TypeScript dosyası, 68 test dosyası ve 151 commit’ten oluşan, ilişkisel veritabanı, kaynak doğruluk kaynağından ayrı geçici koordinasyon ve uygulamalar arasında ortak sözleşmeler bulunan bir sistem var. Diğer uçta, tek bir süreç ve yirmi giriş noktası olan, tam gerektiği kadar bir sistem var. Kapsam, herhangi bir boyut için bir vaat değildir — çalıştığımızın iki ucunu da görmüş olduğumuz gözlemidir.

Teslimattan sonra bakım da yapıyor musunuz?

Evet, ama zımni değil, ayrı bir anlaşma olarak. Siparişe göre yapılan bir sistemin güvenlik güncellemelerine, dış sağlayıcılardaki değişikliklerin takibine ve günlükleri izleyen birine ihtiyacı vardır. Bunu kendi ekibinizle yapmak isterseniz, devir buna uygun olacak şekilde kurulur. Bizim yapmamızı isterseniz, neyi kapsadığı ve neyi kapsamadığı yazılır — “acil”in ne anlama geldiği de dahil, çünkü tanım olmadan bu kelime hiçbir şey ifade etmez.

Yukarıdaki iddialar neye dayanıyor (15 kaynak)

Bunlardan 15 tanesi depolarımızdaki kod ve dosyalardır. Adlarını ya da satırlarını yayımlamıyoruz: hepsi bir arada, tek bir sayfada, yalnızca bize ait olmayan sistemlerin nasıl kurulduğunu fazla net anlatırdı. İstek üzerine, depoda sizinle birlikte gözden geçiriyoruz — doğrulama hâlâ mümkün, sadece bir görüşme içinde yapılıyor.

Neyin daha iyi çalışmasını isterdiniz?

Bize sürecinizi anlatın. Neyin kurulmaya değer olduğuna, neyi bağlayabileceğimize ve sonucu nasıl doğrulayacağımıza birlikte karar verelim.

Hadi konuşalım