ARTYKUŁY

Miasto przyznaje się do nieprawidłowości, ale winę zrzuca na Google i operatora (ŁOT), którego samo finansuje

Autor: Maciej Lesiak Opublikowano: słów: 4650 minut czytania: 22 minut czytania

Rozbiór odpowiedzi wiceprezydenta Łodzi Tomasza Piotrowskiego na interpelację o inwigilacji w miejskich serwisach. Zderzam oficjalne pismo miasta z ukrywanymi umowami i twardymi dowodami z audytu RODO. Zobacz, jak samorząd próbuje rozmyć odpowiedzialność za profilowanie mieszkańców.

30 czerwca 2026 roku wiceprezydent Łodzi Tomasz Piotrowski odpowiedział na interpelację radnych Sebastiana Bulaka, Marcina Buchalego i Piotra Ciepluchy z 22 maja. Interpelacja wprost powoływała się na mój audyt i na dowody, które od miesięcy leżą na stole. Pismo, które dostali radni, jest o tyle ciekawe, że po raz pierwszy pada w nim oficjalne przyznanie faktu, któremu miasto zaprzeczało przez ponad rok. A jednocześnie jest to dokument zbudowany na kilku unikach, które chcę tu rozłożyć na czynniki pierwsze, akapit po akapicie.

Najważniejsze jest jednak to, co się dzieje, gdy to pismo położyć obok umów, które miasto samo podpisało. W kluczowym miejscu, w którym wiceprezydent zapewnia radnych, że z danymi mieszkańców w aplikacji i w Karcie Łodzianina nie ma nic wspólnego, jego własne dokumenty mówią coś dokładnie odwrotnego. Do tego jeszcze wrócę, bo to jest moment, w którym cała odpowiedź się sypie.

Zacznijmy od kontekstu, bo bez niego trudno zrozumieć, dlaczego to jest ważne.

Rok zaprzeczeń

W maju 2025 roku, po mojej pierwszej publikacji o miejskim kombinacie reklamowym, radny Kosma Nykiel zapytał Urząd Miasta Łodzi o monetyzację danych mieszkańców. Miasto odpowiedziało, że nic takiego nie istnieje, i temat zamknięto.

W listopadzie 2025 roku złożyłem do UODO zawiadomienie dotyczące przetwarzania danych w serwisach miejskich (sygnatura DOK240835862).

W lutym i marcu 2026 roku sprawę opisała „Gazeta Wyborcza". Przedstawiciele Urzędu Miasta i spółek miejskich zapewnili wtedy dziennikarzy, że wszystko działa zgodnie z prawem i żadnych nieprawidłowości nie ma.

Dopiero interpelacja trójki radnych, oparta na moim audycie, doprowadziła do dokumentu, w którym miasto pisze co innego. Warto tę sekwencję zapamiętać: zawiadomienie do organu ochrony danych nie wymusiło przyznania niczego, publikacja w prasie ogólnopolskiej nie wymusiła przyznania niczego, a jedno pytanie radnych w trybie ustawy o samorządzie gminnym owszem. To mówi więcej o kondycji nadzoru niż o samej Łodzi.

Czym właściwie jest „lodz.pl"

Zanim przejdę do rozbioru pisma, muszę wyjaśnić jedną rzecz, bo bez niej cała sprawa wygląda na zbiór osobnych usterek na przypadkowych stronach. A to nie są osobne usterki. To jeden organizm, który występuje pod jedną marką i który celowo rozpisano na kilka podmiotów.

„lodz.pl", pisane też jako „Łódź.pl", to nie jest jedna strona. To marka, pod którą siedzą co najmniej cztery rzeczy: portal informacyjny lodz.pl, aplikacja mobilna Łódź.pl, program Karta Łodzianina oraz doklejone do aplikacji moduły, w tym newsy, bilety, obsługa mieszkańca i odpady. Dla mieszkańca to jest jedno. Wchodzi na „miejski portal", instaluje „miejską aplikację", wyrabia „miejską kartę", wszystko brandowane herbem i nazwą miasta.

A pod spodem każda z tych rzeczy ma przypisany inny podmiot, do którego miasto odsyła, gdy pada pytanie. Portal lodz.pl? Wiceprezydent odsyła do Biblioteki Miejskiej. Aplikacja Łódź.pl? Do Biblioteki oraz Łódź Media Group i ŁOT. Karta Łodzianina? Do ŁOT jako operatora koncesji. Sprzedaż reklam z milionowym ruchem miesięcznie na www i baza 174 tysięcy adresów mailowych oraz 170 tysięcy numerów telefonów? To już Łódź Media Group. Pięć pytań, pięć różnych adresatów, i za każdym razem nie urząd.

I tu jest sedno. Ta sama Karta Łodzianina, która zaczynała jako prosta karta zniżkowa rozliczana w modelu koncesji, wchłonęła moduł newsowy, bileterię, obsługę mieszkańca i odpady, i stała się de facto miejską superaplikacją. Prosta karta lojalnościowa przepoczwarzyła się w platformę, która zbiera dane o tym, co mieszkaniec czyta, gdzie jest, kim jest, co przegląda, jakie bilety kupuje, z jakich usług korzysta. A wszystkie te powierzchnie, portal i aplikacja, karmią jedną maszynę: analitykę Google, piksele Meta, ad server Biblioteki i na końcu Łódź Media Group, które tę uwagę sprzedaje reklamodawcom. Chociaż jest też możliwa taka segmentacja użytkowników do wykorzystania w reklamach politycznych, czyli tzw. mikrotargetowanie.

To dlatego monetyzacji nie da się pokazać, wskazując palcem jeden podmiot. Bo cała konstrukcja jest tak rozpisana, żeby rozwodnić sprawę… Portal należy do jednego, aplikacja do drugiego, karta do trzeciego, sprzedaż do czwartego, a dane płyną przez wszystkich. Rozmycie odpowiedzialności nie jest efektem ubocznym tej struktury. Ono jest jej funkcją. I dokładnie dlatego wiceprezydent mógł napisać pismo, w którym na żadne z trudnych pytań nie odpowiada „my", tylko za każdym razem „proszę pytać kogoś innego".

„Wspólna obsługa informatyczna" to nie umowa współadministrowania

Piotrowski otwiera odpowiedź od podstawy prawnej wspólnego kontenera:

„Miasto prowadzi obsługę informatyczną jednostek organizacyjnych Miasta Łodzi zaliczanych do sektora finansów publicznych na podstawie Uchwały Rady Miejskiej."

To brzmi jak wyjaśnienie, a jest zmianą tematu. Radni w pytaniu czwartym pytali o coś konkretnego: czy istnieją formalne uzgodnienia o współadministrowaniu w rozumieniu art. 26 RODO między Miastem, Biblioteką Miejską, Łódzką Organizacją Turystyczną i Łódź Media Group. Uchwała o wspólnej obsłudze informatycznej reguluje, kto technicznie utrzymuje serwery i systemy. Nie reguluje tego, kto jest administratorem danych osobowych i na jakiej podstawie dane wędrują między podmiotami. To są dwa różne reżimy prawne. Wspólna obsługa IT nie legalizuje sytuacji, w której kontener analityczny należący do jednego podmiotu odpala się na domenach kilkunastu innych i wysyła identyfikator użytkownika do Google, DoubleClick i zewnętrznego ad servera.

Piotrowski nie odpowiada, czy uzgodnienia z art. 26 istnieją. W piśmie tego zdania po prostu nie ma. W praktyce brak odpowiedzi na pytanie o dokument, o który wprost proszono, czyta się jednoznacznie: takich uzgodnień nie ma. A to był jeden z moich głównych zarzutów w zawiadomieniu do UODO z listopada 2025 roku. Dzisiaj dysponuję materialnymi dowodami i wiedzą jakie te ustalenia rzeczywiście były.

„Rozwój serwisu" tłumaczy genezę, nie legalność

Kolejny akapit to opowieść historyczna:

„Działanie wspólnego kontenera Universal Analitics na wielu stronach związane było z rozwojem serwisu internetowego urzędu."

Chciałbym wierzyć, że tak było, że kiedyś istniała jedna witryna, potem rozpadła się na podstrony, a wspólny identyfikator pomiaru został po drodze przez “bałagan”. To realna, typowa geneza techniczna na stronie gabinetu fryzjerskiego, ale nie wielkiego serwisu miejskiego. Problem w tym, że geneza nie jest usprawiedliwieniem stanu obecnego. To, że coś ma przyczynę historyczną, nie znaczy, że jest dzisiaj zgodne z prawem, tym bardziej, że miasto ma obowiązek do zgodności z RODO i okresowo ktoś zatwierdza, że wszystko jest w porządku. Prawda?

Jest tu dodatkowo kłopotliwy fakt, którego pismo nie dotyka. Universal Analytics został przez Google wyłączony w lipcu 2023 roku. Jeśli w marcu 2026 roku, czyli w dacie moich skanów, kontener UA wciąż wysyłał pełny pageview do Google, to nie jest „zachowany stary identyfikator". To jest aktywna transmisja danych przez półtora roku po tym, jak samo narzędzie zostało oficjalnie uśmiercone przez producenta. Natomiast jak wykazałem ten kontener zawiera inne. Utrzymywanie martwego kodu, który mimo to nadal wysyła dane osobowe, jest osobnym problemem jakości zarządzania IT.

„Każda strona ma odrębny GA4" kontra dowody i ciche przeróbki

Przeczytajmy uważnie:

„W przypadku niektórych serwisów stary identyfikator UA został zachowany. Obecnie każda ze stron ma swój odrębny identyfikator GA4 lub nie posiada go wcale."

Piotrowski podaje dwa identyfikatory, G-NWG6TNN5CK dla uml.lodz.pl i G-97Z8CGYCYX dla bip.uml.lodz.pl, i na tym kończy. Radni w pytaniu drugim prosili o identyfikatory dla całej listy domen, w tym lodz.pl, mpu.lodz.pl, bip.zlm.lodz.pl, mosir.lodz.pl, orientarium.lodz.pl i aquapark.lodz.pl. Odpowiedzi na tę listę w piśmie nie ma.

Kluczowe jest jedno słowo: „obecnie". Mój audyt dokumentuje stan z marca 2026 roku, w którym rodzina domen uml_portal dzieliła jedną property GA4 i jeden kontener UA. Przeanalizowałem ponad 40 domen i witryn wykazując dokładnie kontenery i opis szczegółowy ruchu sieciowego. Pismo opisuje stan z końca czerwca. Miasto nie zaprzecza temu, co pokazałem. Mam wrażenie, że miasto opisuje stan po cichej naprawie i przedstawia go jako naturalny porządek rzeczy. To nie jest sprostowanie moich ustaleń. To jest przyznanie, że stan trzeba było zmienić, opakowane w czas teraźniejszy. Jeżeli dziś każda strona ma odrębny GA4, to znaczy, że wcześniej go nie miała. Dokładnie to wykazał audyt.

„Odpowiadają kierownicy jednostek"?

„Pozostałe z wymienionych w piśmie strony są stronami odrębnych jednostek, za których treść oraz za zapewnienie zgodności ich prowadzenia, pod względem formalno-prawnym, odpowiadają kierownicy tych jednostek."

To jest wewnętrznie sprzeczne z otwarciem pisma. W pierwszym akapicie miasto tłumaczy, że prowadzi wspólną obsługę informatyczną jednostek organizacyjnych. W tym akapicie miasto odsyła odpowiedzialność za te same jednostki do ich kierowników. Nie da się utrzymać obu tez naraz. Jeśli to miasto technicznie utrzymuje serwisy jednostek, to miasto wdraża na nich kontenery śledzące. A fakt, że na domenach pomocy społecznej, schroniska czy centrum świadczeń odpala się kontener należący do Biblioteki Miejskiej, jest właśnie dowodem, że te jednostki nie są technicznie niezależne. Nie można jednocześnie zarządzać czyjąś infrastrukturą i umywać ręce od tego, co ta infrastruktura wysyła.

„Nie odnotowano skarg"? To, co faktycznie robi UODO od listopada 2025?

„Nie odnotowano skarg ani zawiadomień dotyczących prywatności i bezpieczeństwa, jednakże informacje zawarte w interpelacji (cytowana publikacja) zainicjowały przeprowadzenie wewnętrznej analizy."

To zdanie otwiera znacznie poważniejszy wątek. Ja złożyłem zawiadomienie do UODO w listopadzie 2025 roku. Jeżeli organ prowadziłby na jego podstawie postępowanie wobec Miasta Łodzi, miasto musiałoby o tym wiedzieć, bo kontrolowany jest o kontroli zawiadamiany. Skoro w piśmie z końca czerwca 2026 roku wiceprezydent pisze, że nie odnotowano żadnych zawiadomień i że dopiero interpelacja radnych uruchomiła wewnętrzną analizę, to wniosek jest niewygodny dla wszystkich: przez ponad pół roku od mojego zawiadomienia w serwisach miejskich o milionowej skali nie wydarzyło się ze strony organu ochrony danych nic, co miasto byłoby w stanie odnotować. W moim zawiadomieniu do UODO wystosowałem konkretne żądania dotyczące pilnego zabezpieczenia, ale przede wszystkim zatrzymania wadliwego przetwarzania. (Ze względu na tę bierność i ciszę, przygotowuję również oficjalne zapytanie prasowe do UODO o status tej sprawy).

Zestawmy to z inną sprawą. Mój audyt Orientarium, po wysłaniu do UODO, wywołał pośpieszne przeróbki strony i komunikatów. Wiem, że urzędnicy miejscy czytali ten materiał kilka dni roboczych po wysłaniu do UODO przed długim weekendem majowym 2026, bo zmiany poszły dokładnie w punktach, które opisałem na cito. A mimo to do dziś nie ma publicznego komunikatu organu, nie ma dalszych działań, i co najważniejsze, sedno problemu w sprawie Orientarium, czyli wadliwe serwery pośredniczące, pozostaje bez zmian. Przypudrowali frontend i komunikaty. Wzór się powtarza: naprawia się to, co widać na powierzchni, i zostawia architekturę, która generuje naruszenie. Nie ma odpowiedzialnych? Mam nadzieję, że są przynajmniej rejestry RODO wprowadzone odpowiednio do systemu obiegu dokumentów z sygnaturą czasową oraz sumą kontrolną. Prawda?

Miasto przyznaje parametr, któremu zaprzeczało

I tu dochodzimy do zdania, dla którego warto było czekać rok:

„Nie możemy wykluczyć, że opisana [sytuacja] miała miejsce, i parametr gcd przyjmował wartość 13l3l3l2l1l1."

No nie można wykluczyć, bo fakty mówią same za siebie. Ten konkretny parametr, w tej konkretnej postaci, jest jednym z filarów mojego audytu. Po roku, w którym miasto najpierw zbyło radnego Nykla, a potem zapewniało prasę, że wszystko jest w porządku, w oficjalnym piśmie pada zdanie, że opisany przeze mnie stan mógł mieć miejsce i że parametr rzeczywiście przyjmował wartość, którą udokumentowałem. Udowodniłem, że dane są przesyłane, a użytkownicy serwisów miejskich profilowani marketingowo bez wyrażonej zgody. Godzinami analizowałem ruch na dziesiątkach domen, aby w serwisie dowody.dadalo.pl udowodnić ten empiryczny fakt. Dzisiaj wiemy, że parametr GCD z niepoprawnymi bannerami cookies (błędna implementacja z CMP) spowodował profilowanie marketingowe na serwisach miejskich bez zgody. Radni dostali czarno na białym potwierdzenie tego, czemu wcześniej zaprzeczano wobec dziennikarzy i radnych (Kosma Nykiel) pytających o te rzeczy UMŁ w 2025 roku po mojej pierwszej publikacji.

Argument DMA, czyli przerzucenie odpowiedzialności na Google

Zaraz po przyznaniu parametru miasto przechodzi do obrony:

„Mała litera l oznacza »not set« (brak konfiguracji) […] brak jawnego sygnału o udzielonej zgodzie spowoduje, że Google zablokuje możliwość wykorzystania tych danych."

Zacznę od tego, że interpretacja „l oznacza not set" jest poprawna i zbieżna z korektą, którą sam opublikowałem w audycie. Nie ma tu sporu o odczyt parametru. Dane były wysyłane przed wyrażeniem zgody albo odmową. Spór jest o wniosek, który miasto z tego wyciąga. A wniosek jest taki: skoro zgoda była „not set", to Google i tak zablokuje dane, więc naruszenia w gruncie rzeczy nie ma. Ten sposób rozumowania nie broni się z co najmniej pięciu powodów.

Po pierwsze, to przeniesienie odpowiedzialności na podmiot, którym miasto nie jest. Obowiązek zebrania zgody przed uruchomieniem cookies nienależących do niezbędnych spoczywa na administratorze, czyli na mieście albo operatorze serwisu, a nie na Google. Mówi o tym regulamin usług Google ale także Prawo komunikacji elektronicznej wymaga zgody przed zapisem takiego cookie na urządzeniu użytkownika. Cookie _ga zapisane w przeglądarce obywatela jeszcze przed kliknięciem bannera to naruszenie już dokonane, niezależnie od tego, co Google zrobi z danymi później.

Po drugie, miasto samo przyznaje, że nie wie, co Google zrobił. W tym samym piśmie pada zdanie, że „przeprowadzona wewnętrznie analiza nie daje jednak jednoznacznej odpowiedzi na sposób, w jaki Google postępował po otrzymaniu takiego sygnału". Nie da się w jednym akapicie napisać, że nie wiadomo, co Google zrobił z danymi, a w drugim zapewnić, że Google dane zablokował. To dwie sprzeczne tezy w jednym dokumencie. Dane nie powinny być transmitowane, a użytkownicy profilowani bez zgody. Dział prasowy Google niestety nie udzielił mi odpowiedzi na pytanie o audyty i zgodności wdrożenia CMP z nowymi wymogami RODO w portalach i serwisach takiej skali. Dlatego chcę tym wątkiem zainteresować Panoptykon.

Po trzecie, DMA reguluje zachowania tak zwanych strażników dostępu na rynku cyfrowym. Piotrowski pisze, że to “ze względu na unijne przepisy (DMA)” Google zablokuje dane. Nie jest przepisem, który zwalnia administratora z obowiązku zbierania zgody na podstawie RODO i Prawa komunikacji elektronicznej. Powoływanie się na DMA w odpowiedzi na zarzut o brak zgody to mylenie reżimu ochrony konkurencji z reżimem ochrony danych osobowych.

Po czwarte, dane fizycznie trafiły na serwery Google, co miasto również przyznaje. To oznacza transfer danych do serwerów Google. Taki transfer bez odpowiedniej podstawy jest osobnym zagadnieniem z rozdziału piątego RODO i istnieje niezależnie od tego, czy Google dane następnie wykorzystał do reklamy jako inventory do remarketingu, budowy segmentacji do marketingu itp.

Po piąte, teza, że stan „not set" jest bezpieczny, nie wytrzymuje zderzenia z resztą materiału. Na jednej z domen miejskich, którą analizowałem, ten sam mechanizm wysyłał parametr npa=0, czyli personalizację reklamową wprost dozwoloną, przy zgodzie wciąż nieustawionej. Konfiguracje nie były jednolite i nie były domyślnie „bezpieczne". To była loteria zależna od tego, co przypadkiem wpisano w konfigurację tagu. Szczegóły można prześledzić per domena w zakładce wnioski.

„Zlecono usunięcie starych kodów" i audyt, który jest „rozważany"

„W trakcie prowadzonej analizy zlecono usunięcie wszelkich starych i nieadekwatnych kodów […] Zlecenie zewnętrznego audytu na tym etapie jest rozważane."

Zlecenie usunięcia starych kodów jest przyznaniem, że było co usuwać. To dobrze, że znikają. Obecnie na stronach miejskich widać już nowe bannery cookies, które zastąpiły dotychczasowe rozwiązania. Należy jednak zaznaczyć, że nie poddawałem ich jeszcze weryfikacji i audytowi technicznemu pod kątem zgodności z prawem. Gorzej z tym, że po publicznym audycie, po zawiadomieniu leżącym w UODO od listopada i po publikacji w „Wyborczej" zewnętrzny audyt jest dopiero „rozważany", a jego przeprowadzenie ma zależeć od wyniku prac prowadzonych wewnętrznie. To nie jest postawa instytucji, która chce dojść do dna. To jest minimum reakcyjne, rozłożone tak, żeby jak najdłużej trzymać sprawę wewnątrz urzędu.

Punkt kulminacyjny: „autorskie narzędzie zgody" na Biuletynie Informacji Publicznej

Najmocniejsze zdanie całego pisma dotyczy mechanizmu zgody:

„Na stronach uml.lodz.pl i bip.uml.lodz.pl wdrożone jest autorskie narzędzie zgody na cookies stworzone na potrzeby UMŁ."

To zdanie rozmija się z tym, co widać w kodzie źródłowym, i rozmija się w sposób, który trzeba nazwać. Mechanizm zgody w rodzinie serwisów miejskich to cookie-box.js, biblioteka dostępna publicznie pod adresem github.com/r4fx/cookie-box. Jej własne nagłówki mówią wszystko: wersja 2.0, dzień publikacji 16 marca 2014 roku, ostatnia aktualizacja 31 stycznia 2016 roku. To jest porzucony kod z GitHuba, wycofany z rozwoju ponad dziesięć lat temu, na długo przed tym, jak RODO w ogóle weszło w życie. Nazwanie tego „autorskim narzędziem stworzonym na potrzeby UMŁ" nie odpowiada temu, co można odczytać wprost z plików serwowanych przez miejskie serwery. Radni dostali opis, który nie zgadza się z materiałem dowodowym. Autorski kod, to po prostu martwy kod z Githuba, który nigdy nie powinien być wdrożony produkcyjnie. Ryzyko wdrożenia tego właśnie się zmaterializowało w naruszeniach.

Zrzut ekranu pliku cookie-box.js To jest ten „autorski kod” stworzony na potrzeby UMŁ. Jego analiza jednoznacznie pokazuje m.in. brak możliwości łatwego wycofania zgody oraz całkowity brak rejestru zgód (kto, kiedy, na co).

I teraz sedno, dla którego ten punkt jest osobnym skandalem, a nie kolejną techniczną usterką. bip.uml.lodz.pl ale też inne strony BIP przetwarzające wrażliwe dane, to nie jest zwykła strona informacyjna. To Biuletyn Informacji Publicznej, narzędzie realizacji konstytucyjnego prawa dostępu do informacji publicznej z art. 61 Konstytucji RP, prowadzone w reżimie ustawy z 6 września 2001 roku o dostępie do informacji publicznej oraz rozporządzenia MSWiA z 18 stycznia 2007 roku w sprawie BIP. Obywatel, który wchodzi na BIP, korzysta z konstytucyjnej gwarancji dostępu do informacji o działalności władzy publicznej. Nie wolno go przy tej okazji poddawać komercyjnemu śledzeniu jako niepisanemu warunkowi dostępu. Wdrożenie na BIP dziesięcioletniego, porzuconego skryptu, który udaje mechanizm zgody, a jednocześnie przepuszcza analitykę Google przed jakimkolwiek kliknięciem, to naruszenie kwalifikowane. Wychodzi poza RODO i dotyka gwarancji, na której opiera się kontrola obywatela nad władzą. Ktoś ten kod na miejskich serwerach odebrał, ktoś go utrzymywał i ktoś przez lata prawdopodobnie potwierdzał w protokołach fikcję, że mechanizm zgody działa i jest legalny.

Dodatkowo samo sformułowanie z pisma, że „przed kliknięciem wysyłane są zgody na ciasteczka niezbędne", opisuje tylko połowę obrazu. Cookies niezbędne rzeczywiście nie wymagają zgody, to prawda. Ale mój audyt pokazuje, że przed kliknięciem leciały nie tylko cookies niezbędne, tylko także _ga, _gid i beacon do Google Analytics. Pismo opisuje tę część, której nikt nie kwestionuje, i pomija tę, która jest sednem zarzutu.

Odesłanie do ŁOT i Biblioteki, czyli ucieczka od dokumentów, które miasto samo podpisało

Na koniec miasto rozkłada ręce:

„Pytania dotyczące Karty Łodzianina proszę kierować do operatora karty. Pytania dotyczące portalu lodz.pl proszę kierować do Biblioteki Miejskiej. Pytania dotyczące aplikacji Łódź.pl proszę kierować do Biblioteki Miejskiej oraz do Łódź Media Grup / ŁOT."

To jest odpowiedź na pytania siódme i dwunaste, czyli o profilowanie użytkowników Karty Łodzianina i o umowę z Łódź Media Group. I tu przestaje wystarczać prawo. Tu wystarczą podpisy.

Dotarłem do Umowy o partnerstwie publiczno-prywatnym zawartej 28 października 2020 roku. Miasto Łódź jest w niej „Podmiotem Publicznym", stroną umowy, a nie postronnym obserwatorem. Pod dokumentem widnieją podpisy Pierwszego Wiceprezydenta Adama Pustelnika i Dyrektora Łukasza Gossa. W punkcie 9.1.3.5 tej umowy zapisano, że Partner Prywatny jest zobowiązany do wykorzystywania Bazy Użytkowników, cytuję, „w celach marketingowych na prośbę Podmiotu Publicznego". Przeczytajmy to jeszcze raz. Na prośbę Miasta. Miasto z jednej strony zapewnia dziś radnych, że z bazą użytkowników nie ma nic wspólnego i że trzeba pytać operatora, a z drugiej w umowie koncesyjnej zarezerwowało sobie prawo, by tą właśnie bazą sterować do własnych akcji marketingowych. To nie jest podmiot, który oddał dane i stracił nad nimi kontrolę. To jest podmiot, który wpisał sobie do umowy dźwignię i trzyma na niej rękę.

W tym świetle odesłanie „proszę pytać operatora" jest zasłoną dymną. Nawet gdyby pominąć umowę, art. 26 ust. 3 RODO jest jednoznaczny: osoba, której dane dotyczą, może wykonywać swoje prawa wobec każdego ze współadministratorów. Ale umowa idzie dalej niż RODO. Ona pokazuje czarno na białym, że miasto nie tylko jest współadministratorem, ono jest stroną, która zastrzegła sobie inicjatywę w komercyjnym użyciu danych mieszkańców.

Aplikacja, którą miasto kupiło, a teraz udaje, że jej nie zna

Jest jeszcze warstwa, której skaner stron internetowych nie zobaczy, a która stoi dokładnie za pytaniem siódmym radnych. Aplikacja mobilna Karty Łodzianina to osobny kanał danych. Firebase Analytics wysyła zdarzenia do property GA4 z identyfikatorem urządzenia, który jest trwalszy niż jakiekolwiek cookie w przeglądarce, bo żyje tak długo, jak długo aplikacja jest zainstalowana. Jeśli operator łączy identyfikator zalogowanego użytkownika z danymi z weryfikacji uprawnień, a więc z dokumentami z ZUS, dokumentami podatkowymi czy orzeczeniami o niepełnosprawności, albo wizytami w serwisach wrażliwych jak DPS, czy podstrony BIP dotyczące niepełnosprawności, to powstaje most między tożsamością behawioralną a danymi wrażliwymi. Osobną analizę możliwych grup marketingowych zamieszczę w osobnym artykule. Pytanie siódme dotyczyło dokładnie tego. Wiceprezydent na nie nie odpowiedział, tylko przekierował do Biblioteki oraz Łódź Media Group.

I znów, dokumenty mówią co innego niż pismo. 8 stycznia 2024 roku podpisano Aneks nr 1 do Umowy PPP. Pod aneksem, podobnie jak pod umową, widnieją podpisy Pierwszego Wiceprezydenta Adama Pustelnika i Dyrektora Łukasza Gossa. Na mocy tego aneksu oraz Protokołu Konieczności nr 1/2023 to Miasto Łódź zleciło i zapłaciło z wolnej ręki kwotę 250 132,80 zł brutto za dodanie do aplikacji sześciu nowych modułów, wśród nich modułu newsowego, bileterii, wydarzeń, obsługi mieszkańca i odpadów komunalnych. Miasto z własnego budżetu kupiło rozbudowę tej aplikacji i ukształtowało jej funkcje. Nie kilka lat wcześniej, tylko na kilkanaście miesięcy przed tym, jak w oficjalnym piśmie odsyła w sprawie tej samej aplikacji do zewnętrznego operatora. Twierdzenie, że aplikacja to domena Biblioteki albo ŁOT, jest zaprzeczaniem własnym fakturom i własnym podpisom. Nie da się jednocześnie być architektem i sponsorem narzędzia, i utrzymywać, że jest się w tej sprawie stroną trzecią.

Kto odpowiada za dane, które miasto oddało operatorowi?

Miasto oddało dane mieszkańców zewnętrznemu operatorowi. Jak pokazałem wyżej, jednocześnie zastrzegło sobie w umowie prawo, by ta baza była wykorzystywana marketingowo na jego prośbę, oraz samo sfinansowało i ukształtowało aplikację, w której te dane się zbiera. W języku RODO to czyni miasto co najmniej współadministratorem, a współadministrator nie może zdjąć z siebie odpowiedzialności zdaniem „proszę pytać operatora".

Pytanie brzmi więc prosto. Kto realnie odpowiada za to, co dzieje się z danymi setek tysięcy mieszkańców, i za to, co aplikacja wysyła do Google i Meta? Z pisma wiceprezydenta wynika odpowiedź, która powinna niepokoić: nikt tej odpowiedzialności nie bierze. Miasto zapewnia, że to nie jego sprawa, a operatora, do którego odsyła, samo powołało do tej roli, samo finansuje i łączy je z nim umowa dająca miastu inicjatywę w marketingowym użyciu danych. To nie jest problem prawa koncesyjnego. To jest problem odpowiedzialności za przetwarzanie danych, a ryzyko ponosi mieszkaniec, który o niczym nie wie. To nie jest hipokryzja jednego pisma. To jest sytuacja, w której za dane mieszkańców nie odpowiada nikt, a odpowiedzialność krąży między miastem a operatorem, którego miasto samo do tej roli powołało.

Te strukturalne wątki, dotyczące tego, jak to partnerstwo jest zbudowane i finansowane, prowadzę dalej, ale osobnym torem i nie sam. W tej sprawie nawiązałem współpracę z Łódź Cała Naprzód, której zależy, w interesie mieszkańców i w interesie społecznym, by wydrążyć temat, który odkryłem. Gdy te wątki będą udokumentowane równie twardo jak warstwa danych, wrócę do nich osobno.

Skoro miasto „usuwa stare kody", mówię organom: sprawdzam

Wróćmy na chwilę do jednego zdania z pisma, bo w świetle wszystkiego powyżej brzmi ono inaczej niż przy pierwszym czytaniu. Wiceprezydent informuje, że „zlecono usunięcie wszelkich starych i nieadekwatnych kodów".

Chcę być precyzyjny co do statusu tego, co teraz powiem, bo to jest hipoteza śledcza, a nie wyrok. Konsultowałem tę sprawę, także jako osoba od kilkunastu lat pracująca w marketingu i infrastrukturze webowej, ze specjalistami znającymi kuchnię ad-tech od podszewki, w tym techniki black hat SEO i różnych technik obchodzenia zabezpieczeń znany jako CONSENT BYPASS. Ich odczyt pokrywa się z moim. Utrzymywanie kodów legacy przy takiej skali operacyjnej, kodów, które dawno powinny zostać podmienione, jest w tej branży znaną techniką obchodzenia zabezpieczeń, które Google wprowadzał w ostatnich latach. Migracja z Universal Analytics na GA4, wygaszanie starych identyfikatorów, kolejne wersje Consent Mode, to wszystko były kroki mające domknąć zbieranie danych bez zgody. Pozostawienie równolegle działającego, „zapomnianego" kanału legacy z błędnie wdrożonym mechanizmem zgody pozwala te zabezpieczenia ominąć. Efekt jest wymierny: większe inventory reklamowe i możliwość śledzenia użytkownika poza systemem zarządzania zgodą. Powtórzmy to jeszcze raz consent bypass.

Miasto będzie się bronić bałaganem i brakiem nadzoru, i taką linię już w piśmie zapowiada. Postawmy więc pytanie uczciwie. Mówimy o lodz.pl, sztandarowym projekcie cyfrowym miasta, i o serwisach BIP, w dobie RODO, obowiązku raportowania naruszeń i kar liczonych w milionach. Czy naprawdę ktoś uwierzy, że przez lata, na najważniejszych domenach miasta, gdzie miesięczny ruch liczony jest w milionach, był to wyłącznie przypadek i niedopatrzenie? Ja tej wiary nie mam. Ale, i to jest kluczowe, nie stawiam tego jako udowodnionego faktu. Stawiam to jako hipotezę, którą da się rozstrzygnąć. Rozstrzyga się ją na logach i na zapisie ruchu sieciowego. I dokładnie dlatego, żeby tę hipotezę potwierdzić albo obalić, wnosiłem o zabezpieczenie tych dowodów wiele miesięcy temu, do Prokuratury oraz do UODO.

I tu jest problem, którego nie wolno przemilczeć. Te same dowody, o których zabezpieczenie prosiłem, są dziś zagrożone. Miasto samo, oficjalnie, na piśmie do radnych, informuje, że „usuwa stare kody" pod hasłem prac porządkowych. Nie przesądzam niczyich intencji. Stwierdzam fakt: materiał, który jako jedyny może tę hipotezę potwierdzić albo obalić, może być w tej właśnie chwili nadpisywany, a organy, które miały go zabezpieczyć, przez miesiące nie dały znaku, że to zrobiły. Dlatego mówię wprost, po nazwie instytucji: sprawdzam. Zabezpieczcie logi i zapisy ruchu, zanim „prace porządkowe" je nadpiszą. Redakcja dadalo.pl posiada dwa potężne repozytoria dowodowe, ale to nie obywatele powinni zabezpieczać dowody…

I stąd pytanie, które zadaję już nie miastu, tylko organom państwa. Sprawa dotyczy serwisów o milionowej skali, ciągnie się od listopada 2025 roku, a realny ruch pojawił się dopiero po interpelacji radnych. Nie wiem, dlaczego tak jest, i nie będę zgadywał. Odnotuję tylko, co leży na stole: mówimy o przetwarzaniu danych w serwisach o milionowej skali, w sprawie, którą organ zna od miesięcy. Im wyższa stawka, tym większe prawo opinii publicznej, by wiedzieć, czy bezczynność wynika z obiektywnej złożoności sprawy, czy z czegoś innego. Na to pytanie odpowiedzi się domagam, a nie udzielam. I będę je powtarzał tak długo, aż padnie.

List otwarty do Rzecznika Praw Obywatelskich

Dlatego równolegle z tą publikacją kieruję do Rzecznika Praw Obywatelskich list otwarty z wnioskiem o objęcie sprawy nadzorem. Powód jest podwójny. Po pierwsze, interes społeczny: mówimy o serwisach, z których korzysta około 700 tysięcy mieszkańców i ponad 350 tysięcy uczestników programu Karta Łodzianina. Po drugie, wszystko wskazuje na to, że organ właściwy, czyli Prezes UODO, w tej sprawie pozostaje bierny, mimo że o problemie wie od miesięcy. Sprawa BIP dodatkowo mieści się wprost w mandacie Rzecznika, bo dotyka konstytucyjnego prawa dostępu do informacji publicznej, a nie tylko przepisów o ochronie danych.

Pismo wiceprezydenta Piotrowskiego jest w gruncie rzeczy przyznaniem opakowanym w uniki. Przyznaje parametr, przyznaje istnienie starych kodów, które trzeba było usunąć, przyznaje, że po interpelacji ruszyła wewnętrzna analiza. A jednocześnie unika odpowiedzi na pytanie o współadministrowanie, przerzuca odpowiedzialność na Google i na kierowników jednostek, przedstawia ponad dziesięcioletni porzucony skrypt, który ktoś odebrał w ramach przetargu na systemy IT, jakoś to przeszło niezauważenie i było latami utrzymywane, chociaż ocena, że to śmietnik nie wymagała wysokich kompetencji technicznych, a Wiceprezydent nie powinien odsyłać najtrudniejszych pytań do operatorów, których miasto samo finansuje i którymi na mocy umowy steruje. Jeśli radni są tak zbywani, to tym bardziej mieszkaniec, który chce dochodzić własnych praw.

Bo to jest sedno całej sprawy - bezradność obywatela wobec machiny. Miasto mówi jednym głosem, a podpisuje się drugim. W piśmie z czerwca 2026 roku wiceprezydent zapewnia, że z danymi w aplikacji i w Karcie Łodzianina nie ma nic wspólnego. Pod umową z 2020 roku i pod aneksem z 2024 roku, którymi miasto zarezerwowało sobie marketingowe wykorzystanie bazy użytkowników i dopłaciło ćwierć miliona do rozbudowy aplikacji, widnieją podpisy jego własnego wiceprezydenta. To nie są dwa różne miasta. To jest jeden urząd, który liczy na to, że nikt nie położy jego pisma obok jego umowy. Do samej umowy, jej klauzul i tego, jak była chroniona przed ujawnieniem, wrócę osobno, gdy będę mógł udokumentować to w całości.

To jest materiał, który układa się w ciąg. Maj 2025, zbycie radnego pytającego o monetyzację danych. Marzec 2026, zapewnienia dla prasy, że wszystko jest zgodne z prawem. Czerwiec 2026, pierwsze przyznanie pod naciskiem interpelacji. Za każdym razem to samo: przyznaje się dokładnie tyle, ile już nie da się ukryć, i ani słowa więcej. Różnica jest taka, że tym razem obok pisma leżą podpisane dokumenty, a mieszkańcy Łodzi nie są idiotami, za których urząd chce ich mieć. Będę tę sprawę prowadził dalej.

Ciąg dalszy nastąpi… już niedługo.

Dziękuję wszystkim, którzy w ostatnich miesiącach mi zaufali. Zrozumieli, że moje pierwotne zawiadomienie, oparte na twardych danych technicznych, było trafne, i uwierzyli, że działam w interesie publicznym, nie prywatnym, i całkowicie non-profit. Dziękuję za przekazane informacje i dokumenty, za wsparcie merytoryczne i za głosy poparcia. Wiem, że część z was podzieliła się tym, czym podzielić się nie było łatwo, i tym bardziej to szanuję.


Materiał stanowi kontynuację audytu opublikowanego na dowody.dadalo.pl oraz zawiadomień skierowanych do UODO. Pełna dokumentacja techniczna, w tym logi sieciowe, zrzuty cookies i archiwa stron, pozostaje jawna i dostępna do weryfikacji.

Załączniki

Maciej Lesiak

Wzmacniaj Sygnał

Najlepszym wsparciem jest udostępnianie artykułów i oznaczanie dadalo.pl w mediach społecznościowych. Możesz też wesprzeć finansowo - pokrywa to dostęp do mediów i archiwów prasowych potrzebnych do badań.