AI Lab/GDPR Broker Bot

Kdo drží moje data, musí to přiznat.

Bot na mém serveru rozesílá žádosti podle GDPR firmám, které obchodují s osobními daty. Čte odpovědi, hlídá lhůty a z každé přiznané firmy udělá další cíl. Já jen schvaluju, co odejde.

v provozu, čeká na odpovědiAI Lab · agentNávod pro AI agenta

K čemu to je

Firmy, které o mně vědí, a já o nich ne

Data broker je firma, kterou jsi nikdy neoslovil, a přesto o tobě má složku. Kupuje údaje, skládá je a prodává dál. Jsou jich stovky a seznam „kdo má ta moje“ neexistuje.

GDPR mi dává právo se každé zeptat, co o mně má, odkud a komu to předala. A pak chtít výmaz. Ručně je to práce na týdny.

Tak jsem si napsal bota. Rozesílá žádosti, čte odpovědi, hlídá lhůty a u firem, které mlčí, skládá podklady pro stížnost na úřad.

Proč

Otravná práce, kterou nikdo neudělá

Zkusil jsem to ručně. Pár mailů, tabulka, hlídání lhůty. Po týdnu jsem ztratil přehled a po měsíci chuť.

Přitom je to práce pro stroj: šablona, odeslat, zapsat, počkat, připomenout. Chtěl jsem jen rozhodovat, co odejde mým jménem.

Jak to funguje

Smyčka, která se rozrůstá sama

Telegramsouhrn dávky · moje „ano“ BrokerBot home server · Python bez knihoven · cron Data brokeřižádost e-mailem · odpověď Claudečte jen redigovaný text Lokální databázežádosti · odpovědi · lhůty · skóre Lhůty a urgencepo 30 dnech · spis pro úřad Noví brokeři do frontypřiznaní příjemci · ke schválení
  • Nejdřív přístup, výmaz až potom. Žádost o přístup nutí firmu přiznat zdroj i příjemce dat. Při výmazu by smazala dřív, než řekne, kudy data tečou.
  • Nic neodejde bez mého souhlasu. Bot připraví dávku, pošle souhrn do Telegramu a čeká na moje ano. Stížnost na úřad je vždy ruční.
  • Přiznaní příjemci jsou nové cíle. Claude z odpovědi vytáhne, komu firma data předala. Každá se přidá do fronty ke schválení.
  • Lhůty hlídá bot. Po třiceti dnech bez odpovědi připraví urgenci. Když firma mlčí dál, sestaví podklady pro stížnost.

Co umí

Co bot umí

2

Články, správné pořadí

Přístup podle článku 15, výmaz podle článku 17. Ten druhý až po potvrzení, že data drží.

1

Ano v Telegramu

Souhrn dávky, jedno slovo, teprve pak odeslání.

3

Druhy odpovědí

Potvrzení, věcná odpověď, nedoručení. Bot je k žádosti páruje sám, přeposlaný mail taky.

0–100

Skóre rizika

Drží data, prodal je dál, ignoruje lhůtu. Z chování firmy vznikne číslo a vím, na koho se zaměřit první.

30+

Urgence, pak spis

Po lhůtě urgence. Když firma mlčí dál, vznikne spis pro úřad: časová osa, citace, porušení.

2

Verze reportu

Veřejná bez osobních údajů pro článek, soukromá s celým auditem pro mě.

Co jsem se naučil

Tři věci, na které jsem přišel až v provozu

01

Nejtěžší je prokázat, kdo jsem

Firmy s profesními daty párují podle pracovní identity, ne osobního mailu. Osobní žádost tak často vrátí „nic nemáme“. Dám odkaz na veřejný profil, pracovní mail ani telefon ne. Jen by získali další vazbu.

02

Nejdřív zmapovat, pak mazat

První verze posílala přístup i výmaz najednou. Firma pak klidně „smazala“ a zmizela dřív, než řekla, komu data prodala. Mapa je cennější než rychlý úklid.

03

AI čte odpovědi líp než moje pravidla

Klasifikace podle klíčových slov se pletla. Claude na strukturovanou extrakci je výrazně přesnější. Pravidla zůstala jako záloha.

Pro AI agenta

Postav si to u sebe

Chceš si to postavit u sebe? Zkopíruj návod a dej ho svému AI agentovi, třeba Claude Code nebo Codexu. Je v něm cíl, postup krok za krokem, pasti, na které jsem narazil, a jak ověřit, že to funguje. Adresy ani hesla v něm nejsou, ty agent doplní s tebou.

Pro zvědavé

Technické detaily

Stack a běh Python stdlib · SMTP/IMAP · Claude · SQLite
Jádro
Python 3.12, jen standardní knihovna: smtplib, imaplib, sqlite3. Žádné pip install, vlastní mini .env loader. Běží na home serveru.
E-mail
Samostatná schránka jen pro GDPR. SMTP odesílá, IMAP čte. Párování odpovědí přes Message-ID, detekce bounce i automatického potvrzení. Přeposlaný mail se páruje podle obsahu.
AI vrstva
Claude Sonnet přes vlastní API klíč, jediné místo s AI. Structured output: zdroj, příjemci, drží/nedrží. Před odesláním redakce PII: známé údaje nahrazeny značkami jako [EMAIL], [PHONE].
Data a provoz
SQLite: brokeři, žádosti, odpovědi, lhůty, stav. Cron denně: stáhnout odpovědi, vyřetězit příjemce, přepsat report. V pondělí navíc lhůty a follow-upy. Approval gate přes Telegram.
Životní cyklus žádosti co se s ní děje po odeslání
StavCo to znamenáCo bot udělá
odeslánočl. 15 odešel, běží 30 dnízapíše deadline, čeká
potvrzenoautomatické „máme to“hlásí do Telegramu, lhůta běží dál
věcná odpověďfirma řekla, co má a komu dalaClaude vytáhne zdroj a příjemce, ti jdou do fronty; pokud drží data, připraví čl. 17
nedoručenobouncehlásí do Telegramu, kontakt hledám ručně
po lhůtě30 dní bez věcné odpovědipřipraví urgenci ke schválení
mlčí dálani po urgenci nicvyexportuje spis a draft stížnosti; odeslání je vždy ruční

Spis obsahuje časovou osu, Message-ID, data a lhůty, doslovné citace z odpovědí, AI rozbor a shrnutí porušení.

Skóre rizika 0–100 z chování firmy

Body přičítá za to, že firma data drží, že je předala dál (a kolika příjemcům), že ignoruje lhůtu nebo žádost odmítla. Automatické potvrzení příjmu bez věcné odpovědi je slabý, ale nenulový signál. Výsledek řadí brokery do tří pásem a určuje, komu jde urgence první. Extrakce z odpovědí jede přes Claude, klíčová slova zůstala jen jako fallback bez API.

Dál

Související

Soukromí. Bot běží jen na mém home serveru. Seznam firem, žádosti i odpovědi leží v lokální databázi u mě doma, přihlašovací údaje jsou mimo git. Pro celou komunikaci mám samostatnou schránku: osobní zůstává čistá a korespondence je pohromadě pro případnou stížnost. Do Claude API jde jen redigovaný text odpovědi, moje známé údaje bot předem nahradí značkami. Tahle stránka popisuje, jak je bot postavený: žádný seznam firem ani osobní údaje tu nenajdeš.