Controller: Adanision (legal name Tolga Turut), The Hague, the Netherlands. Contact: info@doenzo.net.
Stapje is a Netherlands settlement guide. It is not a lawyer, not a bank, and not an IND portal. This page describes what this repository’s app and Worker actually send. It is not legal advice. The OpenAI API key is never in the app and never on this page.
Stapje has no user accounts and no Stapje login. The app creates a random device id on the phone (crypto.randomUUID, or a dev. fallback) and stores it in AsyncStorage. That device id is sent with quota, letter-scan, and free-form Ask requests. It is an identifier. Data sent with it is not unlinked.
Your settlement plan, deadlines, letter results you keep, Ask threads, money figures, bookmarks, and settings stay on the phone until you erase them. Letter photos you choose to keep are files on the device, excluded from iCloud backup, not a cloud gallery. FAQ starter answers stay on the phone and do not call OpenAI. We do not sell this data. We do not use it for ads or tracking.
originalTransactionId and the StoreKit 2 signed transaction (JWS), stored on the phone after a purchase or restore and sent with the device id. Stapje does not receive your card number.AI content leaves the phone only after you tap Allow on the in-app consent screen, over HTTPS, via the Cloudflare Worker. A re-explanation sends the previously decoded letter text (title, issuer, summary, what happens if you ignore it, options, amount, and the English explanation) — not a new photo. The Worker sends a static client header X-Stapje-Client: stapje-app/1.0. You can tap Not now on first use. You withdraw or grant consent later in the app under Settings → OpenAI data sharing. The paywall is on (PAYWALL.enabled is true). Purchases go through Apple StoreKit.
Cloudflare. The Cloudflare Worker at the host in the app config receives the requests above. When the QUOTA KV binding is configured, quota rows are stored in Cloudflare KV. This code calls put without expirationTtl, so those rows remain until a confirmed deletion removes them or the namespace is removed outside this app. If KV is not bound, the row is an in-memory map that disappears when the isolate recycles. The Worker is written not to permanently store the photo, letter text, or question: the request is held in memory only long enough to forward it and return the reply. It does not write request bodies, image data, prompts, questions, or model output to logs. An in-memory rate-limit map stores IP timestamps only and resets when the isolate recycles.
OpenAI. Letter photographs, typed questions, the profile fields sent with Ask, and previously decoded letter text sent for a re-explanation are shared with OpenAI, L.L.C. and, for the EEA, OpenAI Ireland Limited, as the AI processor. The Worker forwards that content to https://api.openai.com/v1/chat/completions (model gpt-4o-mini unless OPENAI_MODEL is set) only to generate the explanation or answer. OpenAI provides equivalent protection: under the OpenAI API data-use policy, API inputs and outputs are not used to train models by default, may be retained for up to 30 days for abuse monitoring, and are then deleted. A data-processing agreement and standard contractual clauses (SCCs) apply.
Apple. StoreKit processes the subscription. The signed transaction is produced by Apple and checked on the Worker. Apple’s standard license terms are linked from the paywall. Manage subscriptions opens Apple’s subscription page. Precise location is used on the phone to sort nearby places and is not posted to the Worker. If you open a map, the venue coordinates are handed to Apple Maps or Google Maps, whichever you pick.
Ticketmaster. When TICKETMASTER_API_KEY is set, the Worker requests listings with the city and date window. The phone may then load a cover image from the image host in that listing, so that host sees the device’s IP address. Stapje does not sell tickets. Meetup is not called. The Worker reports Meetup as not implemented.
Sentry. The app initializes Sentry only when EXPO_PUBLIC_SENTRY_DSN is non-empty, and only outside development. This repository does not set that DSN. Crash data is not collected by the configuration checked in here. A later build that sets a DSN would send crash data to Sentry.
Expo updates. updates.enabled is false and checkAutomatically is NEVER. There is no updates.url. This public configuration does not fetch an Expo update manifest.
The paywall is on. StoreKit product ids in the app are Mini, Plus, and Pro monthly and yearly, plus Unlimited monthly and yearly for restore only. The phone stores the original transaction id and the JWS and sends them to the Worker with the device id. Payment is collected by Apple. Stapje does not collect card numbers.
Settings → Start over erases the plan, letters, deadlines, Ask threads, and money figures on this phone even if the server cannot be reached. The app then asks the Worker to delete this device’s quota row (quota:v1:dev:…) and a transaction row only when that row is stamped with this device id. The request is authorized by a secret that stays on the phone, not by typing someone else’s transaction id. If the Worker confirms deletion, or confirms that a device row was already absent and this phone had no transaction, the app says the server deletion is confirmed. If the phone is offline, the secret does not match, or the transaction row is not stamped to this device, the app says the phone was erased and the server deletion is not confirmed. It will retry. It does not claim the server copy is gone in that case. Uninstalling the app removes local files; it does not by itself delete a KV row.
Legacy transaction rows that were stored before a device id was stamped are not deleted merely because a device id is known. This page does not promise a retention period in days. KV rows written by this code have no expiry.
The app is not directed at children under 13. School and leerplicht rows appear only when an adult marks that the household has children.
You can withdraw consent in the app under Settings → OpenAI data sharing. You may request access, correction, or erasure of the quota row tied to this device. Stapje does not sell personal data, and does not use it for advertising or tracking. Contact info@doenzo.net. You may also contact the Dutch supervisory authority, the Autoriteit Persoonsgegevens.
Copyright © 2026 Adanision · info@doenzo.net
Veri sorumlusu: Adanision (yasal ad Tolga Turut), Den Haag, Hollanda. İletişim: info@doenzo.net. Uygulama: Stapje, paket com.adanision.landed.
Stapje bir Hollanda yerleşim rehberidir. Avukat, banka veya IND kapısı değildir. Bu sayfa depodaki uygulamanın ve Worker’ın gerçekten gönderdiğini anlatır. Hukuki tavsiye değildir. OpenAI anahtarı uygulamada ve bu sayfada yoktur.
Stapje’nin kullanıcı hesabı ve girişi yoktur. Uygulama telefonda rastgele bir cihaz kimliği üretir ve kota, tarama ve serbest Sor istekleriyle gönderir. Bu bir tanımlayıcıdır. Onunla giden veri kimlikten kopuk değildir.
Plan, son tarihler, tutulan mektup sonuçları, Sor dizileri, para rakamları, kayıtlar ve ayarlar silinene kadar telefonda kalır. Hazır Sor cevapları OpenAI çağırmaz.
Cihaz kimliği; uygulama içi İzin ver ekranından sonra, HTTPS ile Worker üzerinden küçültülmüş mektup fotoğrafı; serbest soru ve profil alanları (ülke, AB/AEA durumu, amaç, oturma türü, şehir, partner, çocuklar, çocukların yaşları, varış tarihi); açıklama dili; yeniden açıklamada daha önce çözümlenmiş mektup metni; StoreKit originalTransactionId ve imzalı işlem (JWS). Kart numarası Stapje’ye gelmez. Ödeme duvarı açıktır. Satın alma Apple StoreKit ile olur. Etkinlik isteği yalnızca şehir ve tarih aralığıdır. Meetup çağrılmaz. Ticketmaster, anahtar tanımlıysa Worker üzerinden kullanılır; kapak görseli cihazdan yüklenebilir. Konum, yakındakileri sıralamak için telefonda kalır. Sentry yalnızca EXPO_PUBLIC_SENTRY_DSN doluysa başlar; bu depoda o değer yoktur. Expo hava güncellemesi kapalıdır (updates.enabled false, updates.url yok).
Worker fotoğrafı, mektup metnini veya soruyu kalıcı saklamamak üzere yazılmıştır. İstek gövdesi günlüğe yazılmaz. Kota kaydı, KV bağlıysa expirationTtl olmadan yazılır; onaylı silme olmazsa kod bir gün sınırı koymaz. KV yoksa kayıt yalnızca bellektekidir. Mektup, soru ve yeniden açıklama metni AI işleyici olarak OpenAI, L.L.C. ve AEA için OpenAI Ireland Limited ile paylaşılır; yalnızca açıklama veya yanıt üretmek için. OpenAI API veri politikasına göre girdiler ve çıktılar varsayılan olarak model eğitiminde kullanılmaz, kötüye kullanımı izlemek için en fazla 30 gün tutulur, sonra silinir. Veri işleme sözleşmesi ve standart sözleşme maddeleri (SCC) uygulanır. IP hız sınırı bellekte tutulur ve isolate yenilenince sıfırlanır. Veriler satılmaz; reklam veya izleme için kullanılmaz.
Ayarlar → Baştan başla bu telefondaki veriyi, sunucuya ulaşılamasa da siler. Uygulama, telefonda duran bir sırla bu cihazın kota satırını ve yalnızca bu cihazla damgalanmış işlem eşlemesini silmesini ister. Sunucu onaylarsa uygulama sunucu silmenin onaylandığını söyler. Onay yoksa telefonun silindiğini ve sunucu silmenin onaylanmadığını söyler; yeniden dener. Sunucu kopyasının gittiğini o durumda iddia etmez.
Uygulama 13 yaşından küçük çocuklara yönelik değildir.
İzni uygulamada Ayarlar → OpenAI veri paylaşımı altından geri çekebilirsiniz. Bu cihaza bağlı kota satırı için erişim, düzeltme veya silme isteyebilirsiniz. İletişim: info@doenzo.net. Hollanda denetim otoritesi: Autoriteit Persoonsgegevens.
Telif © 2026 Adanision · info@doenzo.net