Kamil DzikowskiCTO · Inżynieria Ery AI · Doradztwo

EN PL
Studium przypadku · Zarządzanie danymi

Otter.ai jest pozywane za to, co robiło z Twoimi spotkaniami. Read AI zostało zakazane przez uniwersytety. Oto, co zbudowałem w zamian — i dlaczego.

W moim kalendarzu jest coraz więcej cyklicznych spotkań w różnych organizacjach — codzienne standupy, cotygodniowe spotkania z partnerami, przeglądy z kadrą zarządzającą — a ja nie mogę być na wszystkich. Oczywistym rozwiązaniem jest narzędzie do notatek ze spotkań. Okazało się jednak, że popularne rozwiązania to nie tyle wygoda, co problem prawny i zarządczy — dlatego zbudowałem własne, hostowane na mojej infrastrukturze, gdzie nagrania i transkrypcje nigdy nie opuszczają środowiska, które kontroluję. Wyjaśniam, dlaczego to zrobiłem, ile to kosztowało i gdzie leży granica między „zrobiłem to dla siebie” a „mógłbym zrobić to dla Twojej firmy”.

Co było zapalnikiem

„Przeczytaj transkrypcję później” to nie system — to nadzieja. Moje potrzeby były precyzyjnie określone: dowiedzieć się, co wydarzyło się na spotkaniu, na którym mnie nie było, przenieść moje zadania do mojego systemu i więcej o tym nie myśleć. To oznaczało poszukiwanie narzędzia do notatek. Jednak to, co odkryłem, analizując rynek, całkowicie zmieniło moją decyzję.

Co tak naprawdę dzieje się w firmach, które używały popularnych narzędzi

To nie jest hipotetyczny problem z prywatnością. To aktywne spory sądowe i zakazy instytucjonalne. Warto zapoznać się ze źródłami, zamiast wierzyć mi na słowo.

Otter.ai — federalny pozew zbiorowy, skonsolidowany w grudniu 2025

Cztery pozwy złożone przeciwko Otter.ai między sierpniem a wrześniem 2025 roku zostały skonsolidowane w jeden federalny pozew zbiorowy w grudniu 2025. Zarzut nie dotyczy jedynie „nagrywania bez zgody” — chodzi o to, że Otter wykorzystywał te nagrania do trenowania własnych modeli rozpoznawania mowy, oraz że firma tak skonstruowała swoje warunki, aby to klienci, a nie Otter, ponosili prawną odpowiedzialność za uzyskanie zgody uczestników. Roszczenia powołują się na federalną ustawę Electronic Communications Privacy Act, kalifornijską Invasion of Privacy Act oraz Biometric Information Privacy Act stanu Illinois — ustawy przewidujące odszkodowania w wysokości odpowiednio do $10,000, $5,000 i $5,000 za każde naruszenie, skierowane przeciwko firmie, której baza użytkowników według niej samej przekracza 35 milionów. W maju 2026 odbyło się posiedzenie w sprawie wniosku o oddalenie pozwu.
Przeczytaj analizę — Workplace Privacy Report → · Artykuł UC Today →

Read AI — całkowicie zakazane, nie tylko krytykowane

Uniwersytet Chapman zbadał Read AI i zakazał jego używania, powołując się na zagrożenia dla bezpieczeństwa, prywatności i danych instytucjonalnych. Dział IT Uniwersytetu Waszyngtońskiego wydał nakaz dezaktywacji narzędzia. Obie instytucje zwróciły uwagę na ten sam mechanizm: po połączeniu z kalendarzem Read AI może dołączać do spotkań, transkrybować je i podsumowywać, nawet jeśli właściciel konta w nich nie uczestniczy — bez wiedzy i zgody pozostałych osób w pokoju.
Komunikat Uniwersytetu Chapman → · Dział IT Uniwersytetu Waszyngtońskiego →

Read AI twierdzi, że nie trenuje modeli na treściach ze spotkań, chyba że klient wyrazi na to zgodę, i oferuje przestrzenie robocze, w których jest to kontraktowo niemożliwe. Przyjmijmy to za dobrą monetę — to wciąż nie rozwiązuje sedna problemu:

Polityka prywatności to obietnica dotycząca zachowania. Self-hosting to fakt wynikający z architektury. Polityki są zmieniane, firmy są przejmowane, a obietnica, którą pobieżnie przeczytałeś w mailu pół roku temu, może się zmienić. Pytanie nie brzmi, czy ufasz im dzisiaj — ale czy istnieje jakakolwiek możliwość, że coś pójdzie nie tak, gdy już przekażesz im swoje dane.

Żadna polityka nie rozwiązuje też większego problemu: nie da się „od-udostępnić” transkrypcji. Moje standupy regularnie obejmują status bieżących incydentów bezpieczeństwa, stanowisko regulatora czy ograniczenia kadrowe. Żadna z tych informacji nie powinna trafić do cudzego repozytorium, podlegając przyszłym decyzjom kogoś innego.

Co zbudowałem

Bota do spotkań na własnym hostingu i infrastrukturze, który dołącza do rozmów na Google Meet, na które jest zaproszony, odczytuje transkrypcję i dostarcza podsumowanie oraz moje zadania prosto do narzędzi, których już używam. Ani nagranie, ani transkrypcja nigdy nie opuszczają mojej sieci, a w procesie nie bierze udziału żadna chmurowa usługa transkrypcji. Uczestnik, projekt open-source, dołącza do rozmowy. Wszystko, co dzieje się później — podsumowanie, kierowanie na moją listę zadań, dostarczenie na odpowiedni czat — jest moje.

Technologia przechwytywania nie jest autorska. Attendee jest oprogramowaniem open source (licencja Elastic License 2.0 — darmowe do użytku wewnętrznego, nie może być odsprzedawane jako usługa hostowana). Każdy kompetentny zespół inżynierski mógłby zbudować coś o podobnej strukturze. Notatki z budowy, które znajdziesz niżej, opisują, jak to wyglądało w praktyce.

Architektura składa się z dwóch części połączonych celowo uproszczonym interfejsem — tylko transkrypcja i ID wydarzenia z kalendarza, nic więcej nie przekracza tej granicy:

Przechwytywanie Prawdziwy Chrome dołącza do spotkania, odczytuje napisy generowane przez Google
→ transkrypcja + ID wydarzenia →
Moje narzędzia Podsumowanie → zadania w Todoist → Telegram, na czacie odpowiedniego projektu

Ten uproszczony interfejs sprawia, że część przechwytująca jest wymienna — dzisiaj Attendee, jutro coś innego — bez konieczności modyfikowania dalszych etapów procesu.

Co to tak naprawdę daje, oprócz tego, że „dane zostają na miejscu”

PodejścieKoszt transkrypcjiGdzie trafiają Twoje dane
Zewnętrzne API dla botów (np. Recall.ai) ~$0.50 + $0.15/godz. Ich chmura
Otter.ai / Read AI / podobne W ramach abonamentu Ich chmura — patrz wyżej
To rozwiązanie — napisy z platformy $0, bez limitów Nigdy nie opuszczają mojej sieci
Dotyczy tylko kosztu transkrypcji — konto Workspace i tak jest stałym kosztem, niezależnym od użycia.

Koszty i ograniczenia

Jeśli to aktualne wyzwanie dla Twojej firmy

Jeśli Twój zespół rozważał Otter, Read AI, Fireflies lub podobne narzędzia, ale coś w haśle „zewnętrzna firma ma wgląd w nasze spotkania” budziło Wasz niepokój — ten instynkt jest słuszny. To dokładnie ten aspekt, któremu przyglądam się w ramach Audytu Efektywności Inżynierskiej lub technicznego due diligence zlecenia: gdzie faktycznie trafiają Wasze dane, ile kosztuje Was ewentualny wyciek i czy własne rozwiązanie jest warte wysiłku inżynierskiego przy Waszej skali i ryzyku. Nie podaję tu ceny — wdrożenie dla firmy to zupełnie inny projekt niż to, z czego korzystam osobiście. Omówmy jego zakres podczas rozmowy.

Jeśli to aktualne wyzwanie dla Twojej firmy, porozmawiajmy o tym, jak w rzeczywistości wygląda ekspozycja Waszych danych na ryzyko.

Czytam każdą wiadomość i odpowiadam osobiście.


Chcesz to zobaczyć w akcji, a nie tylko o tym czytać? Oto jak system wygląda w codziennym użyciu — bot na prawdziwym spotkaniu, rzeczywiste notatki i sposób, w jaki integruje się z narzędziami, z których już korzystam.

Jak to działa

Zaproś konto bota na wydarzenie w kalendarzu i to cały interfejs — bez panelu, bez aplikacji do otwierania. Pojawia się na liście gości, dołącza sam o czasie i uczestniczy w spotkaniu jak każdy inny:

Samohostujący bot do notatek ze spotkań, o nazwie „Kamil's Notetaker”, widoczny jako kafelek uczestnika podczas rozmowy w Google Meet
Bot podczas rozmowy na żywo — widoczny jako zwykły uczestnik, wyciszony i jasno nazwany, aby nikt nie miał wątpliwości, czym jest.

Co się dzieje w tle: bot odczytuje napisy na żywo generowane przez Google Meet (dźwięk nie opuszcza sieci), a po zakończeniu spotkania system podsumowujący zamienia transkrypt w ustrukturyzowane notatki — co się wydarzyło, co zostało postanowione, co jest zablokowane i jakie zadania należą do mnie. Oto prawdziwy przykład, z imionami zmienionymi na potrzeby tego opisu:

Rzeczywista wiadomość z notatkami ze spotkania dostarczona do Telegrama: tytuł, krótkie podsumowanie, najważniejsze punkty, decyzje i zadania do wykonania z przypisaną osobą i terminem
Dostarczone prosto na Telegram — jedna wiadomość na spotkanie, dzięki czemu mogę odnieść się do konkretnego podsumowania.

Tym, co naprawdę oszczędza czas, nie jest samo podsumowanie — ale to, co dzieje się z nim dalej. Zadania, które faktycznie należą do mnie, stają się prawdziwymi zadaniami z terminem wykonania, przypisanymi do etykiety, po której mogę filtrować we wszystkich projektach:

Widok w Todoist przefiltrowany po etykiecie meeting_notes, pokazujący zadania wygenerowane ze spotkań wraz z terminami i statusami
Każde zadanie pochodzące ze spotkania otrzymuje meeting_notes etykietę — jeden filtr, wszystkie projekty, niczego nie trzeba szukać.

Zasady, które mogłem dodać tylko dlatego, że mam pełną kontrolę nad procesem

Zewnętrzny dostawca tworzy podsumowania dla swojego przeciętnego klienta. Mój system ma tylko jednego czytelnika, co przekłada się na konkretne zasady w prompcie, a nie na ustawienia w menu:

Działa również w trakcie trwania spotkania

Transkrypcję można czytać na żywo, a nie dopiero po zakończeniu rozmowy. Dzięki temu na pytanie „co do tej pory omówiono?” odpowiedź jest generowana w trakcie spotkania na podstawie tego, co faktycznie powiedziano — nawet bez mojej obecności. Przetestowałem to, pisząc ten artykuł: zapytałem, o czym mówiono podczas rozmowy, w której nie uczestniczyłem, i otrzymałem odpowiedź, zanim spotkanie dobiegło końca.

„A w czym Twoje rozwiązanie jest bezpieczniejsze?”

Słuszne pytanie, które należy zadać każdemu, kto przedstawia taki argument. Samodzielne zbudowanie narzędzia nie czyni go automatycznie bezpiecznym — sprawia jedynie, że polityka bezpieczeństwa staje się... twoja, co jest zaletą tylko wtedy, gdy faktycznie coś z tym zrobisz. W tym przypadku oznacza to konkretnie, że:

Czego dzięki self-hostingowi nie zyskasz: zespołu bezpieczeństwa dostawcy, historii jego audytów ani regularności we wdrażaniu poprawek. To wszystko bierzesz na siebie. Jeśli chodzi o treść spotkań, zawsze jestem gotów pójść na taki kompromis — ale jest to właśnie kompromis, a nie darmowe ulepszenie. Każdy, kto twierdzi inaczej, nigdy nie wdrażał takiego systemu produkcyjnie.

Notatki z wdrożenia: na co faktycznie poświęciłem czas

Najwięcej czasu zajęło zupełnie co innego, niż można by się spodziewać. Postawienie kontenerów to kwestia jednego popołudnia. Wszystko, co opisuję poniżej, wydarzyło się później — to prawdziwe ślepe zaułki, z których każdy kosztował mnie cały dzień pracy. Jeśli rozważasz opcję „przecież możemy to zbudować sami”, to jest to lista, od której powinieneś zacząć.

1. Zalogowany bot do spotkań nie używa hasła

To kwestia, która zwykle zaskakuje. Bot, który dołącza do Google Meet... jako prawdziwe, zalogowane konto uwierzytelnia się przez SAML — serwer przechwytujący działa jako dostawca tożsamości (identity provider), Google na niego przekierowuje, a on podpisuje poświadczenie (assertion) kluczem prywatnym. Wynikają z tego trzy nieuniknione konsekwencje: bot musi być utworzony na... płatnym koncie Workspace (prywatne konto Google nie ma konsoli administratora i dosłownie nie może obsługiwać takiego profilu); bot... nie może być administratorem (Google pozwala superadministratorom omijać SSO, więc bot z uprawnieniami admina w ogóle nie uruchomiłby tego procesu); a profil SSO, który tworzysz... przekierowuje logowanie dla wszystkich, których obejmuje — jeśli źle określisz jego zakres w działającej domenie firmowej, zablokujesz pracownikom dostęp do ich własnych kont.

Właśnie dlatego mój system działa w osobnym, testowym środowisku (tenancie) i w domenie, od której nikt nie jest zależny. Kosztuje to jedno stanowisko, ale eliminuje jedyny naprawdę ryzykowny krok w całym procesie. W przypadku produkcyjnego systemu tożsamości klienta nie jest to decyzja, w której można pozwolić sobie na błąd w piątkowe popołudnie.

2. Błąd, który kosztował mnie dzień: flaga w ciasteczku (cookie)

Pierwsza próba z SAML zakończyła się niepomocnym błędem logowania. Po stronie Google wszystko było w porządku — zwracało w pełni poprawne żądanie poświadczenia. Rzeczywista przyczyna: serwer przechwytujący oznaczał swoje ciasteczko sesyjne... Secure domyślnie, a Chrome odmawia zapisania Secure ciasteczka przez nieszyfrowane połączenie HTTP, więc po cichu znikało ono, a logowanie kończyło się niepowodzeniem. Problem rozwiązała zmiana jednego ustawienia. W żadnym logu nie było słowa „ciasteczko”.

Zaletą odkrytą przy okazji było to, że Google zaakceptowało http:// adres URL logowania bez szyfrowania, więc żadna praca związana z kończeniem sesji TLS czy certyfikatami nie była w ogóle potrzebna.

3. Przynależność do właściwej domeny nie gwarantuje dostępu do spotkania

Anonimowe dołączanie po prostu nie działa w przypadku spotkań Meet hostowanych w ramach Workspace — wyświetla się jedynie komunikat „Nie możesz dołączyć do tej rozmowy wideo”, bez przycisku prośby o wpuszczenie. Tym, co faktycznie umożliwia botowi dołączenie, jest jego obecność... na liście gości w kalendarzu. Kryje się tu jednak pułapka: jeśli organizator ustawi opcję „goście nie mogą zapraszać innych”, dodanie bota przez API zwróci... informację o powodzeniu , a Google po cichu zignoruje to zaproszenie. Bez błędu, bez bota i bez żadnej informacji zwrotnej aż do momentu, gdy spotkanie rozpocznie się bez niego.

4. Bot, który na oczach wszystkich ciągle dołączał do spotkania i je opuszczał

Przez pewien czas bot dołączał, znikał i ponownie dołączał — i tak kilka razy, na oczach wszystkich uczestników. Główna przyczyna: próba kliknięcia przycisku zamykającego okno dialogowe, gdy to było jeszcze w trakcie animacji, co skutkowało błędem „element not interactable”. System nadrzędny klasyfikował to jako błąd dołączenia możliwy do ponowienia, więc każde nieudane kliknięcie restartowało cały proces dołączania zamiast ponowić samo kliknięcie. Trzy nieudane próby w ciągu dwóch minut, zanim sytuacja się ustabilizowała. Rozwiązaniem było wywołanie kliknięcia przez JavaScript zamiast natywnego — dwie linijki kodu, gdy już wiesz, z czym masz do czynienia.

5. Kwestie operacyjne, których uczysz się dopiero w praktyce

Co dalej — i czego jeszcze nie zbudowałem

Napisy w Meet są darmowe i szybkie, ale obsługują tylko jeden język naraz, bez automatycznego wykrywania. To realne ograniczenie dla zespołów, które mieszają języki w trakcie zdania, co jest częste w firmach działających w kilku krajach. To stwarza realną szansę, by zrobić to lepiej niż sama platforma: przepuścić dźwięk lokalnie przez model mowy na tekst, taki jak Whisper, zamiast (lub obok) napisów. Daje to automatyczne wykrywanie języka i obsługę przełączania kodów (code-switching), czego napisy w Meet po prostu nie oferują, a wszystko to bez wysyłania dźwięku poza sieć. Nie zbudowałem jeszcze tej warstwy dla siebie — powyższa konfiguracja opiera się wyłącznie na napisach — ale architektura już przewiduje na nią miejsce. To dokładnie ten rodzaj rozszerzenia, który uwzględniłbym w projekcie dla zespołu, który faktycznie pracuje w wielu językach.

Chcesz omówić, jak wersja tego rozwiązania mogłaby wyglądać w Twoim zespole?

Czytam każdą wiadomość i odpowiadam osobiście.

← Wróć do studiów przypadków