Anonimnost kao arhitektonska invarijanta: zašto „nećemo vas kontaktirati” nije dovoljno
Obećanja kao „nikada vas nećemo kontaktirati bez najave” u B2B platformama nisu izvršiva — provajderi ih zaobiđu van platforme. Ono što radi je tehnička invarijanta: kontakt podaci žive u odvojenoj sferi, server ih otključava tek na obostrani match. Svojstvo koda, ne TOS klauzula.
Klasično B2B matching obećanje: „Nikada nećete biti kontaktirani bez najave.” Lepo formulisano. Neodrživo.
Platforma ne može da spreči da provajder van platforme istraži, izvuče broj firme iz registra i pozove. Obećanje je tvrdnja o svetu — a svet je širi od bilo kog TOS ugovora.
Šta zaista drži: arhitektonske invarijante
Na PairSonalu smo preformulisali obećanje. Umesto:
„Vaše kontakt podatke nećemo proslediti.”
sada stoji:
„Vaši HR kontakt podaci na platformi tehnički nisu vidljivi provajderima — sve dok vi sami ne otključate match.”
Razlika nije semantička. Strukturna je:
- Kontakt podaci žive u odvojenoj bazi-sferi.
- Listing endpoint vraća profile čiji payload ne sadrži
email,telefon,kontakt_person. - Match endpoint server-side radi join na kontakt-sferu tek nakon obostranog otključavanja.
- Frontend nema code-path koji bi rekonstruisao polja koja ne postoje u tipu.
Obećanje postaje svojstvo koda. Ko testira „šta se desi kad učitam profile?” — polja jednostavno ne postoje u šemi.
Zašto je to jače
- Auditovo. Auditor čita OpenAPI šemu i utvrđuje: kontakt polja u anonymous-sferi ne postoje. To je činjenica, ne TOS.
- Skalira sa timom. Novi kolega ne može greškom napraviti endpoint koji procuri polja — ona nisu u klasi modela koju on import-uje.
- Otporno na auth bug. Bug u privilege sloju ne može otkriti skrivena polja koja u response šemi ne postoje.
Kada je preterano
Arhitektonske invarijante koštaju. Praktično praviš dva modela podataka, dva repository-ja, dve service klase, eksplicitan most. Za korisnički profil sa tri atributa, ovo je preterivanje.
Tačka isplativosti: kada je obećanje sam proizvod. Ako klijenti dolaze na platformu jer veruju anonimnosti — anonimnost ne sme biti TOS klauzula. Mora biti deo layer-arhitekture, inače proizvod umre sa prvim leak-om.
Opšte pravilo
Za svako „nećemo raditi X” obećanje sada pitamo:
Možemo li to izgraditi tako da to tehnički ne možemo?
Ako da: gradimo. Ako ne: obećanje je tvrdnja, ne feature — i treba ga imenovati kao tvrdnju, ne prodavati kao feature.